PHP7 用 Exception catch不到error,Throwable 才可以

本文讨论了PHP7.x中引入的新Throwable类与PHP5.x中的Exception类在异常处理上的区别,指出在不同版本中catch块的执行条件。

Throwable work on PHP 7.x. 

Exception work on PHP 5.x. 

 参考链接: https://www.php.net/manual/en/language.errors.php7.php

​<?php

try {

  // Code that may throw an Exception or Error.

} catch (Throwable $t) {

  // Executed only in PHP 7, will not match in PHP 5

} catch (Exception $e) {

  // Executed only in PHP 5, will not be reached in PHP 7

}

### Java 中 `try-catch` 处理 `Exception` `Throwable` 在 Java 中,异常处理机制允许程序捕获并响应错误条件。主要的异常类有两个层次结构:`Error` 类 `Exception` 类,两者都是 `Throwable` 的子类。 #### 使用 `Exception` 当仅捕捉 `Exception` 及其子类时,通常用于处理可以预见的应用逻辑中的问题: ```java public class Example { public static void main(String[] args) { try { int result = divide(10, 0); } catch (ArithmeticException e) { System.out.println("Caught Arithmetic Exception"); } } private static int divide(int a, int b) throws ArithmeticException { if (b == 0) throw new ArithmeticException("Division by zero!"); return a / b; } } ``` 此代码片段展示了如何专门针对特定类型的异常进行处理[^1]。 #### 使用 `Throwable` 相比之下,捕捉 `Throwable` 则更为广泛,不仅涵盖了所有的运行时异常 (`RuntimeException`) 受检异常 (`Checked Exception`),还包括了严重错误 (`Error`) 如虚拟机内部错误或资源不足等问题: ```java public class ErrorHandlingExample { public static void main(String[] args) { try { // Simulate an error condition Thread.dumpStack(); } catch (Throwable t) { System.err.println("An unexpected throwable occurred."); t.printStackTrace(System.err); } } } ``` 这段代码能够捕获任何可能发生的致命错误,并打印堆栈跟踪信息以便调试。 值得注意的是,在大多数情况下推荐只捕获具体的异常而不是泛化至 `Throwable` 或者甚至更宽泛的 `Exception`,因为这可能会隐藏真正应该被注意到的重要问题。对于不可恢复的情况应当让它们终止应用程序而非试图继续执行下去[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暮雨疏桐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值