php catch e是什么,php try catch 中的catch(Exception $e) 中的Exception 有什么作用?

首先很明确的是 try ... catch ... 是一个语言结构。

那既然如此就不能用函数参数类型限定的方式去理解 catch 后面的括号里的 Exception 了。

如果这里没有 Exception,比如这样写:

try {

} catch ($e) {

}

你会得到一个错误:

Parse error: parse error, expecting "identifier (T_STRING)"' or"namespace (T_NAMESPACE)"' or `"\\ (T_NS_SEPARATOR)"' in ...

显而易见,这里的 Exception 是一种『预期』,用于判断捕获到的异常类型的。

如果用类的情景来翻译一下,大概就类似于:

$e = new Exception;

if ($e instanceof Exception) {

# do something ...

}

如果你是多个 catch,比如:

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) 也一样。

这也和以下情况相同:

$e = new CustomException;

if ($e instanceof CustomException) {

echo 1;

} elseif ($e instanceof Exception) {

echo 2;

}

class CustomException extends Exception

{

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值