首页 > 编程语言 >php8: Throwable和Exception的区别

php8: Throwable和Exception的区别

时间:2024-10-16 10:35:30浏览次数:8  
标签:Exception 致命 错误 php8 Throwable Fatal

一,php8中的一些错误如致命错误用Exception捕捉不到

例子:

<?php
        try {
            echo "try";
            $a = 100/0;
            var_dump($a);
        }catch (\Exception $e){
            echo "catch";
            $result = $e->getMessage();
        }
?>

效果:

可以看到发生致命错误Fatal error时,
Exception未能捕捉到发生的异常

 

二,php8中用Throwable可以捕捉到致命错误

PHP8引入了一种新的错误处理机制,称为“Fatal errors to exceptions”(FTE)。
它将之前的致命错误(Fatal Error)转化为可捕获的异常,
使得我们能够更好地处理和追踪错误,提高代码的可靠性和性能。
在 PHP8.0 中,所有的内置异常都实现了 Throwable 接口。
这些内置异常包括除 ArithmeticError 之外的 Error 类型,以及 RuntimeException 和其衍生版本。
另一个重要的方面是,Throwable 增加了对非异常类型错误的支持。
它允许程序员在 catch 块中处理致命错误和错误的警告,即使这些错误不能被完全恢复

代码:

<?php

        try {
            echo "try<br/>";
            $a = 100/0;
            var_dump($a);
        }catch (Throwable $e){
            echo "catch";
            $result = $e->getMessage();
        }

?>

效果:

 

标签:Exception,致命,错误,php8,Throwable,Fatal
From: https://www.cnblogs.com/architectforest/p/18469292

相关文章