【发布时间】:2018-06-06 03:09:54
【问题描述】:
我想知道对于动态代码(而不是静态代码)会抛出哪些我没有发现的错误。例如,我的代码可能运行 10 年没有抛出任何异常,然后抛出 UncaughtException
我想专门(非一般地)捕获我正在使用的方法可能引发的每种类型的异常。我怎么知道这些方法可能会抛出什么异常?
我想非泛型地捕获可能为一段 PHP 代码抛出的每种类型的错误。
可能抛出的异常示例:
PDOException
ExpiredException
现在我什么都有了:
try{
...
}catch(Exception $e){
...
}
我想用这样的东西替换它:
try{
...
}catch(PDOException $e){
...
}catch(ExpiredException $e){
...
}catch(Exception $e){
...
}
我想确信我可以捕获代码部分中的方法可能引发的所有不同类型的异常
如果我单独捕获所有异常,删除这部分是否安全?:
catch(Exception $e){
...
}
或者有没有简单的抛出异常的方法?
我的解决方案偏好列表(1 是最偏好的解决方案):
1:我可以打开一个标志,它会导致 php.exe 警告我未明确捕获的每种可能类型的异常
2:一种单独检查每个方法并查看可能引发的错误的方法。文档是唯一的检查方法吗?或者是否有一些 IDE 或 PHP 块可以告诉我个别方法可能会抛出哪些异常?
【问题讨论】:
-
要回答第 1 部分,您可以在脚本开头调用
error_reporting(E_ALL);来记录发生的每个错误,无论您是否发现它。 -
This answer 介绍了如何将所有警告捕获为异常,然后您可以根据需要进行处理。
-
当然可以,但我想知道一段代码(或单独为每个方法)可能会引发哪些错误,因为某些错误可能需要以特定方式处理。
-
我的代码不是静态的,所以这没有帮助。昨天第一次抛出ExpiredException,被catch(Exception $e){ ... }处理不当。我添加了 catch(ExpiredException){ ... } 现在如果再次发生它将得到适当的处理。我想知道可能会抛出哪些我没有发现的错误。例如,明天可能会抛出一种我没有正确处理的新异常。我正在使用标准的 PHP 代码,例如 $this->connection = new PDO($dsn, $username, $password, $dboptions);,但这会抛出 PDOException。
标签: php error-handling exception-handling