Angular - 如何在组件级别实现异常处理

abd*_*hab 7 javascript reactjs angular

在Angular(Angular 4,5)中工作时,如果组件引发Error(TypeError或null或未定义的错误等),则整个应用程序会中断.

我们如何处理这个问题,以捕获组件级别的错误并可能显示回退UI,如React16使用错误边界.

nir*_*aft 1

我将通过在组件级别处理错误来处理它,并提供一个服务来侦听在组件或服务级别发生的任何错误。前任:

  1. 从服务中抛出错误
  2. 捕获组件中的错误
  3. 处理错误,处理它并将包含详细信息的 Error 事件发送到 ErrorService。
  4. 您可以拥有一个应用程序级组件“errorBannerComponent”,它从 ErrorService 获取输入并绘制您的 UI。
  5. 一旦 ErrorService 收到错误,errorBannerComponent 就应该在屏幕上显示错误。

希望能帮助到你。

另外,默认情况下,Angular 附带了自己的 ErrorHandler,它可以拦截应用程序中发生的所有错误并将它们记录到控制台,从而防止应用程序崩溃。我们可以通过创建一个实现 ErrorHandler 的新类来修改此默认行为:

您可以在此处找到更多详细信息和示例:

  • React 的错误边界确保如果运行时出现前所未有的错误,应用程序不会崩溃,用户也会看到回退 UI。在编译/开发时不明显的运行时错误将使 Angular 应用程序崩溃。我一直想解决这个问题。 (2认同)
  • 默认情况下,Angular 附带了自己的 ErrorHandler,它可以拦截应用程序中发生的所有错误并将它们记录到控制台,从而防止应用程序崩溃。这可以通过创建一个实现 ErrorHandler 的新类来修改:您可以在此处阅读更多信息:https://medium.com/@aleixsuau/error-handling-angular-859d529fa53a (2认同)