Skip to content

Commit b92f432

Browse files
committed
refactor: 增加开发模式检查
1 parent 029283e commit b92f432

4 files changed

Lines changed: 39 additions & 13 deletions

File tree

src/BootstrapBlazor/Components/ErrorLogger/BootstrapBlazorErrorBoundary.cs

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
using Microsoft.AspNetCore.Components.Rendering;
77
using Microsoft.Extensions.Configuration;
8+
using Microsoft.Extensions.Hosting;
89
using Microsoft.Extensions.Logging;
910
using System.Reflection;
1011

@@ -31,6 +32,10 @@ class BootstrapBlazorErrorBoundary : ErrorBoundaryBase
3132
[NotNull]
3233
private NavigationManager? NavigationManager { get; set; }
3334

35+
[Inject]
36+
[NotNull]
37+
private IHostEnvironment? IHostEnvironment { get; set; }
38+
3439
/// <summary>
3540
/// 获得/设置 自定义错误处理回调方法
3641
/// </summary>
@@ -54,13 +59,10 @@ class BootstrapBlazorErrorBoundary : ErrorBoundaryBase
5459
/// <inheritdoc/>
5560
/// </summary>
5661
/// <param name="exception"></param>
57-
protected override async Task OnErrorAsync(Exception exception)
62+
protected override Task OnErrorAsync(Exception exception)
5863
{
59-
if (ShowToast)
60-
{
61-
await ToastService.Error(ToastTitle, exception.Message);
62-
}
6364
Logger.LogError(exception, "{BootstrapBlazorErrorBoundary} {OnErrorAsync} log this error occurred at {Page}", nameof(BootstrapBlazorErrorBoundary), nameof(OnErrorAsync), NavigationManager.Uri);
65+
return Task.CompletedTask;
6466
}
6567

6668
/// <summary>
@@ -69,13 +71,13 @@ protected override async Task OnErrorAsync(Exception exception)
6971
/// <param name="builder"></param>
7072
protected override void BuildRenderTree(RenderTreeBuilder builder)
7173
{
74+
// 页面生命周期内异常直接调用这里
7275
var ex = CurrentException ?? _exception;
7376
if (ex != null)
7477
{
7578
// 处理自定义异常逻辑
7679
if (OnErrorHandleAsync != null)
7780
{
78-
// 页面生命周期内异常直接调用这里
7981
_ = OnErrorHandleAsync(Logger, ex);
8082
return;
8183
}
@@ -132,7 +134,7 @@ private MarkupString GetErrorContentMarkupString(Exception ex)
132134
}
133135

134136
/// <summary>
135-
/// 渲染异常信息方法
137+
/// BootstrapBlazor 组件导致异常渲染方法
136138
/// </summary>
137139
/// <param name="exception"></param>
138140
/// <param name="handler"></param>
@@ -145,14 +147,35 @@ public async Task RenderException(Exception exception, IHandlerException? handle
145147
return;
146148
}
147149

150+
// 记录日志
151+
await OnErrorAsync(exception);
152+
148153
if (handler != null)
149154
{
150-
await handler.HandlerException(exception, ExceptionContent);
155+
if (IHostEnvironment.IsDevelopment())
156+
{
157+
// IHandlerException 处理异常逻辑
158+
await handler.HandlerException(exception, ExceptionContent);
159+
}
160+
else
161+
{
162+
// 非开发模式下弹窗提示错误信息
163+
await ToastService.Error(ToastTitle, exception.Message);
164+
}
151165
return;
152166
}
153167

154-
await OnErrorAsync(exception);
168+
// 显示异常信息
169+
await ShowErrorToast(exception);
155170
_exception = exception;
156171
StateHasChanged();
157172
}
173+
174+
private async Task ShowErrorToast(Exception exception)
175+
{
176+
if (ShowToast)
177+
{
178+
await ToastService.Error(ToastTitle, exception.Message);
179+
}
180+
}
158181
}

src/BootstrapBlazor/Components/Layout/Layout.razor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ private Task OnErrorLoggerInitialized(ErrorLogger logger)
673673
private RenderFragment? _errorContent;
674674

675675
/// <summary>
676-
/// HandlerException 错误处理方法
676+
/// <inheritdoc/>
677677
/// </summary>
678678
/// <param name="ex"></param>
679679
/// <param name="errorContent"></param>

src/BootstrapBlazor/Components/Modal/ModalDialog.razor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ private RenderFragment RenderBodyTemplate() => builder =>
449449
protected RenderFragment? _errorContent;
450450

451451
/// <summary>
452-
/// HandlerException 错误处理方法
452+
/// <inheritdoc/>
453453
/// </summary>
454454
/// <param name="ex"></param>
455455
/// <param name="errorContent"></param>

src/BootstrapBlazor/Components/Tab/TabItemContent.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,14 @@ public void Render()
9393
}
9494

9595
/// <summary>
96-
/// HandlerException 错误处理方法
96+
/// <inheritdoc/>
9797
/// </summary>
9898
/// <param name="ex"></param>
9999
/// <param name="errorContent"></param>
100-
public Task HandlerException(Exception ex, RenderFragment<Exception> errorContent) => DialogService.ShowErrorHandlerDialog(errorContent(ex));
100+
public async Task HandlerException(Exception ex, RenderFragment<Exception> errorContent)
101+
{
102+
await DialogService.ShowErrorHandlerDialog(errorContent(ex));
103+
}
101104

102105
/// <summary>
103106
/// IDispose 方法用于释放资源

0 commit comments

Comments
 (0)