PHP中的异常处理:$ e在哪里?

jcs*_*lzr 5 php exception

我一直在寻找这个,我似乎只是遇到了相同的文章,在这段代码中:

   try
    {
        //some code

    }
    catch(Exception $e){
        throw $e;
    }
Run Code Online (Sandbox Code Playgroud)

$ e存储在哪里或网站管理员如何看待它?我应该寻找特殊功能吗?

Mar*_*iek 7

从catch {}块内部抛出的Exception对象(在本例中为$ e)将被下一个最高的try {} catch {}块捕获.

这是一个愚蠢的例子:

try {
    try {
        throw new Exception("This is thrown from the inner exception handler.");
    }catch(Exception $e) {
        throw $e;
    }
}catch(Exception $e) {
    die("I'm the outer exception handler (" . $e->getMessage() . ")<br />");
}
Run Code Online (Sandbox Code Playgroud)

以上的输出是

我是外部异常处理程序(这是从内部异常处理程序抛出的.)

  • $ e-> getMessage()只是一个返回带有错误消息的字符串的函数.这里的示例#1(http://www.php.net/manual/en/language.exceptions.extending.php)有一些关于标准Exception对象中可用的方法的一些很好的信息. (4认同)

gra*_*rks 5

一个好处是Exception实现了__toString()并输出了一个调用堆栈跟踪.

因此,有时在低级别的例外中,我知道我会想看到我的方式,在catch()中,我只是做

error_log($e);
Run Code Online (Sandbox Code Playgroud)