laravel中的异常:级别、处理、日志记录
教程的运行环境:Windows 7系统,Laravel版本9,DELL G3电脑。
laravel 中的异常级别
永久 | 描述 |
---|---|
E_ERROR | 致命的运行时错误。这些类型的错误通常是由不可恢复的情况引起的,例如内存分配问题。这会导致脚本停止并且不再运行。 |
E_WARNING | 运行时警告(非致命错误)。仅出现提示消息,但脚本未完成。 |
E_PARSE | 翻译语法解析错误。解析错误仅由解释器生成。 |
E_NOTICE | 运行时通知。它表明脚本遇到了显示为错误的情况,但在正常运行的脚本中也可能出现类似的通知。 |
E_CORE_ERROR | 初始化 PHP 时发生致命错误。此错误与 E_ERROR 类似,但由核心 PHP 引擎生成。 |
E_CORE_WARNING | PHP初始化期间发生的警告(非致命错误)。与 E_WARNING 类似,但由 PHP 引擎生成。 |
E_COMPILE_ERROR | 致命的翻译错误。与 E_ERROR 类似,但由 Zend 脚本引擎生成。 |
E_COMPILE_WARNING | 编译时警告(非致命错误)。与 E_WARNING 类似,但由 Zend 脚本引擎生成。 |
E_USER_ERROR | 用户生成的错误消息。与 E_ERROR 类似,但由用户使用代码中的trigger_error() PHP 函数生成。 |
E_USER_WARNING | 用户生成的警告消息。与 E_WARNING 类似,但由用户在代码中使用 trigger_error() PHP 函数生成。 |
E_USER_NOTICE | 用户生成的通知消息。与E_NOTICE类似,但由用户使用代码中的trigger_error() PHP函数生成。 |
E_STRICT | 启用 PHP 建议的代码更改,以确保最佳的互操作性和转发器兼容性。 |
E_RECOVERABLE_ERROR | 可捕获的致命错误。表示发生了潜在危险的错误,但尚未使 PHP 引擎处于不稳定状态。如果错误没有被用户定义的处理程序捕获(请参阅 set_error_handler ()),则会出现 E_ERROR 并且脚本将停止。 |
E_DEPRECATED | 运行时通知。如果启用,将出现有关在未来版本中可能无法正常工作的代码的警告。 |
E_USER_DEPRECATED | 用户生成的警告消息。与 E_DEPRECATED 类似,但由用户在代码中使用 trigger_error() PHP 函数生成。 |
E_ALL | 给用户的警告消息。与 E_DEPRECATED 类似,但由用户在代码中使用 trigger_error() PHP 函数生成。 |
Laravel 异常处理
Laravel 的异常处理在 class\Illuminate\Foundation\Bootstrap\HandleExceptions::class 中提供:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
| )❀$'❙ { PHP7 实现了全局可抛出接口。原始异常和一些错误都实现了这个接口,并以接口的形式定义了异常的继承结构。结果,PHP7 中更多的错误成为可捕获的异常并返回给开发人员。如果他们不明白,那就是错误。如果它们被捕获,它们就会成为可以在程序内处理的异常。这些可捕获的错误通常是不会对程序造成致命损坏的错误,例如不存在的函数。 PHP7在/Error异常的基础上,衍生出5个新的引擎异常:ArithmeticError / AssertionError / DivisionByZeroError / ParseError / TypeError。在 PHP7 中,旧的 /Exception 和新的 /Error 都实现了一个公共接口:/Throwable。 因此,如果遇到非Exception类型的异常,首先要转换为FatalThrowableError: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 $this->getExceptionHandler( )-> >报告( $m 异常日志 当遇到异常情况时,Laravel 首先做的就是记录日志。这是报告功能的工作。受保护的 back
| } | } 异常页面显示 捕获日志后,必须对异常进行分页显示异常信息,以便开发者查看问题根源:
对于不同的异常,laravel 可以进行不同的处理,大致有 HttpException、HttpResponseException、AuthorizationException、ModelNotFoundException、AuthenticationException、ValidationException 由于特殊异常 异常有各自不同的需求,在此讨论我们不提供的文章。本文继续展示如何处理HttpException最常见的异常:
对于HttpException,错误状态码选择不同的错误页面模板。如果没有相关模板,则通过 SymfonyResponse 创建异常显示页面:
|
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。