【问题标题】:PHP, how to make a function catch, catch PDOExceptionsPHP,如何使函数捕获,捕获 PDOExceptions
【发布时间】:2017-01-15 21:00:27
【问题描述】:

你能让一个方法抛出它的方法体中发生的任何异常吗?我想自动“抛出”任何与 PDO 相关的异常,而不必总是在函数/方法中使用“try/catch”块。

例子:

function testExcption($a..) throws PDOException{
   // PDO related code here.
}

那么我可以在函数/方法声明级别“抛出”和异常并且没有任何 try/catch 块吗?

编辑

我试图避免总是写“try/catch”,因为我只关心那些函数/方法中可能发生的与 PDO 相关的异常。我有很多方法/函数,我厌倦了一直使用“try/catch”来处理 PDO 错误,而且我只关心这些函数/方法中的 PDO 异常。这有意义吗?

编辑

有没有办法在没有 try/catch 块的情况下获取 PDO 错误?

【问题讨论】:

    标签: php function exception methods try-catch


    【解决方案1】:

    也许你正在混合一些东西。 抛出异常是在没有任何try/catch 声明的情况下完成的。抛出异常很简单:

    function nonsensefunc(){
        throw new Exception('<Description of Error>');
    }
    

    另一方面,当调用你的函数时,你必须使用try/catch,你正在捕捉他们。

    那么,当您没有发现错误时会发生什么?异常被抛出一个更高的级别,最后被打印出来。大多数情况下,它会触发 PHP 中止并停止脚本的其余部分。

    那么您的预期行为是什么?将其他事情作为默认行为(打印错误并停止)的唯一方法是捕获它。

    【讨论】:

    • 不,我觉得你混的东西还是糊涂了。我只希望使用任何 try/catch 块在 W/O 方法/函数中捕获 PDO 异常,因为这些是我特别想要处理的唯一异常。在java中你可以在方法声明级别抛出异常,在php中可以吗?
    • 你永远不会在声明级别抛出错误!您只是说编译器,可能会出现这种错误。而已。当错误发生时,投掷完成。然后错误在调用堆栈中被抛出更高的级别,当它没有被捕获时,它被抛出更高的等等。最后核心将处理它(停止脚本)与Java中相同。
    • 好的,如果是这样的话,有没有办法在没有 try/catch 块的情况下捕获异常以便进一步处理?
    • 您可以将整个脚本包装在一个巨大的 try/catch 块中,但我认为这不会有太大帮助,因为同样的问题会发生,您必须立即停止错误发生。如果您想继续执行脚本,则必须在本地捕获错误并以某种方式对其做出反应...
    • 所以如果您的自定义抛出异常被抛出,我如何获取错误本身以进一步处理 w/o try catch 块?
    猜你喜欢
    • 2012-01-25
    • 2019-04-20
    • 1970-01-01
    • 2011-05-14
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多