在 PHP 中 $e 异常的含义是什么?

3

我是PHP新手,在浏览php.net时,发现了这段代码:

<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    return 1/$x;
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo "Hello World\n";
?>

$e 是什么?它可以被重命名吗?它的作用是什么?为什么我们需要它?


只需阅读文档。 - Federkun
@Leggendario 我谷歌了一下,没有找到任何相关的内容... - ufosecret
另外,你可以从了解什么是异常以及如何使用try-catch中受益。 基本上,$e是所述异常的实例,在面向对象编程中,异常只是对象(是的,你可以重命名它)。 - JSelser
1
$e只是一个保存“异常(Exception)”对象的变量,是可以改名的。 - cmorrissey
3个回答

2

$e 是一个保存 Exception 对象的变量,因此您可以重命名它。它的作用是,如果在 try 块中发生异常,则会执行 catch 块,在那里您可以获取异常,可能记录它,尝试其他操作或向用户打印有用的错误信息。

http://php.net/manual/en/language.exceptions.php


2

这只是一个变量,你可以随意命名。基本上,该变量指向异常对象,并且通常称为$e,因为“e”代表Exception。

此外,在使用异常时,最好通过创建一个继承Exception的新类来创建自己的异常类。例如:

<?php

class AuthException extends Exception {}

class SuspendedException extends Exception {}

在这种情况下,如果用户未能通过身份验证,您可以使用throw new AuthException()。另一方面,如果用户成功登录但被暂停使用您的页面,则可以使用throw new SuspendedException()
这样,您就可以扩展try-catch块以捕获不同的异常并进行不同的处理。
<?php

try {
    //logging your user in
} catch (AuthException $ae) {
    //handle an unauthorized user
} catch (SuspendedException $se) {
    //handle a suspended user
}

请注意,我使用的是$ae$se,而不是普通的$e - 正如我之前所说,它们只是变量,可以随意命名。只需尽量保持代码一致即可。

如果我有多个异常会怎么样? - ufosecret
你不可以。你一次只能抛出和捕获一个。 - Erik
1
try块在第一个抛出的异常上失败,因此不能有多个异常。 - Karl
2
@ufosecret 那么你应该为每个异常设置一个唯一的变量。然而 catch (Exception $e) 捕获所有异常,因此它只会捕获第一个被抛出的异常。 - user4704396
你可以有多个异常,但一次只能捕获一个。所以 $e 就足够了。 - vvvsg

0

它可以重命名为任何合法的PHP变量名称,并包含有关发生异常的消息和相关信息。使用var_dump()查看信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接