mysql 失败 捕获 net core_处理 ASP.NET Core Blazor 应用中的错误

本文详细介绍了Blazor应用如何处理和管理未经处理的异常,特别是在开发和生产环境中的不同表现。Blazor在出现错误时会显示错误信息,而在生产环境中不会向客户端呈现详细错误。开发人员应确保应用包含错误处理逻辑,避免在UI中显示敏感信息。此外,文章讨论了组件实例化、生命周期方法、事件处理程序等多个可能出现错误的场景,并提供了相应的处理策略。
摘要由CSDN通过智能技术生成

本文介绍 Blazor 如何管理未经处理的异常以及如何开发检测和处理错误的应用。

开发过程中的详细错误

当 Blazor 应用在开发过程中运行不正常时,从该应用接收详细的错误信息有助于故障排除和修复问题。 出现错误时,Blazor 应用会在屏幕底部显示一个黄色条框:

在开发过程中,黄色条框会将你定向到浏览器控制台,你可在其中查看异常。

在生产过程中,黄色条框会通知用户发生了错误,并建议刷新浏览器。

此错误处理体验的 UI 是 Blazor 项目模板的一部分。

在 Blazor WebAssembly 应用程序中,自定义wwwroot/index.html文件中的体验:

An unhandled error has occurred.

Reload

🗙

在 Blazor Server 应用程序中,自定义Pages/_Host文件中的体验:

An error has occurred. This application may no longer respond until reloaded.

An unhandled exception has occurred. See browser dev tools for details.

Reload

🗙

blazor-error-ui 元素被 Blazor 模板附带的样式隐藏,然后在发生错误时显示。

Blazor Server 应用如何响应未经处理的异常

BlazorServer 是有状态框架。 当用户与应用交互时,它们会保持与服务器(称为线路)的连接。 线路包含活动组件实例,以及状态的许多其他方面,例如:

最新呈现的组件输出。

客户端事件可触发的事件处理委托的当前集合。

如果用户在多个浏览器选项卡中打开应用程序,则它们具有多个独立的线路。

Blazor将最未经处理的异常视为致命的异常,并将其出现在线路上。 如果线路由于未经处理的异常而终止,则用户只可以通过重新加载页面来创建新线路,从而继续与应用进行交互。 已终止的线路(其他用户或其他浏览器选项卡的线路)不会受到影响。 这种情况类似于桌面应用程序崩溃—崩溃的应用程序必须重新启动,但其他应用不受影响。

当发生未处理的异常时,线路会终止,原因如下:

未经处理的异常通常使线路处于未定义状态。

无法在未处理的异常后确保应用的正常操作。

如果线路继续存在,则可能会在应用程序中出现安全漏洞。

在开发人员代码中管理未经处理的异常

若要使应用在出现错误后继续操作,应用必须具有错误处理逻辑。 本文后面的部分将介绍未经处理的异常的潜在来源。

在生产环境中,不要在 UI 中呈现框架异常消息或堆栈跟踪。 呈现异常消息或堆栈跟踪可以:

向最终用户公开敏感信息。

帮助恶意用户发现应用程序中可能会危及应用程序、服务器或网络安全的弱点。

使用永久性提供程序记录错误

如果发生未处理的异常,则会将异常记录到在服务容器中配置 ILogger 实例。 默认情况下,使用控制台日志记录提供程序 Blazor 应用日志输出到控制台输出。 请考虑使用管理日志大小和日志轮换的提供程序,将日志记录到更永久性的位置。

在开发过程中,Blazor 通常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值