php catch e是什么,php try catch 中的catch(Exception $e) 中的Exception 有什么作用?
如題. Exception 是起作用域的作用嗎?還是語言結構?
首先很明確的是 try … catch … 是一個語言結構。
那既然如此就不能用函數參數類型限定的方式去理解 catch 后面的括號里的 Exception 了。
如果這里沒有 Exception,比如這樣寫:
<?php
try {
} catch ($e) {
}
你會得到一個錯誤:
Parse error: parse error, expecting
"identifier (T_STRING)"' or
“namespace (T_NAMESPACE)”‘ or `”\\ (T_NS_SEPARATOR)”‘ in …
顯而易見,這里的 Exception 是一種『預期』,用于判斷捕獲到的異常類型的。
如果用類的情景來翻譯一下,大概就類似于:
<?php
$e = new Exception;
if ($e instanceof Exception) {
# do something ...
}
如果你是多個 catch,比如:
<?php
try {
throw new CustomException("Error Processing Request", 1);
} catch (CustomException $e) {
echo 1;
} catch (Exception $e) {
echo 2;
}
class CustomException extends Exception
{
}
雖然我們拋出的異常也屬于 Exception,但是 catch 捕捉到第一個就停止了,所以這里只會輸出 1,如果互換
catch (CustomException $e)
和
catch (Exception $e)
也一樣。
這也和以下情況相同:
<?php
$e = new CustomException;
if ($e instanceof CustomException) {
echo 1;
} elseif ($e instanceof Exception) {
echo 2;
}
class CustomException extends Exception
{
}
可以看下java,Exception是個類名,catch的$e是類的實例
你也可以自己寫個類來繼承Exception,然后再catch中抓住
類型吧。你也可以寫自己的Exception類
仔細看文檔:
Exception是所有異常的基類。
PHP: Exception – Manual
總結
以上是生活随笔為你收集整理的php catch e是什么,php try catch 中的catch(Exception $e) 中的Exception 有什么作用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php主机转发ipv6,php实现ipv
- 下一篇: 本地如何预览php文件上传,如何实现js