所以我正在尝试了解异常。我遇到了人们经常做的事情,但并没有真正解释他们为什么这样做以及它是如何工作的。也许这是不言而喻的,但我仍然不明白,对于这个问题可能会变成一个不好的问题,我深表歉意。
基本上这是我正在使用的代码:
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}
什么是$e
,在哪里定义此变量。我有个主意。
我在想的是您正在将异常对象分配给变量$e
,但我不确定。不应该是catch (Exception = $e)
吗?
答案 0 :(得分:1)
它的功能与函数参数几乎相同:
function foo(Bar $bar) { ... }
您使用类型提示Bar
,后跟参数名称$bar
,并声明变量。
对于try..catch
,该声明发生在catch
:
catch (Exception $e) { ... }
这使用类型提示Exception
,此处用于指定catch
应该捕获的异常类型。您可以将catch
限制为特定种类的异常,和/或为不同种类的异常定义多个不同的catch
块。然后,异常本身在变量$e
中可用。您可以在此处使用任意变量名称,就像函数参数一样。
答案 1 :(得分:0)
嗯,考虑到这一点,我一直认为Exception $e
是catch()
通话的输入。
据我所知,您尚未定义$e
,因为它已经被抛出,您只是将其传递给catch()
块,就像处理function name($input){}
一样
答案 2 :(得分:0)
在此代码中
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}
关键字Exception
是参数$e
的类型。
在PHP Exception
中,基本异常类是所有异常派生自的基类,因此catch块是所有异常的全部。
即您可能希望在包罗万象之前使用多个处理程序来处理不同的异常类型:
try {
someOperation($parameter);
} catch(DatabaseException $e) {
echo 'Database Exception: ' .$e->getMessage();
} catch(Exception $e) {
echo 'General Exception: ' .$e->getMessage();
}