如题. 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类
以上就是异常处理 - php try catch 中的catch(Exception $e) 中的Exception 有什么作用?的内容,更多相关内容请关注PHP中文网(www.gxlcms.com)!
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:php中文网