【发布时间】:2016-12-28 20:55:44
【问题描述】:
我有一个 PHP 脚本,它需要执行回调函数并捕获特定类型的错误。
<?php
class MyException extends Exception{}
function doStuff(callable $callback){
try{
$callback();
}
catch(MyException $e){
#Deal with it
}
}
?>
回调函数可以使用 try-catch 来防止我的异常冒泡。如何允许回调函数实现 try-catch 块但不允许它捕获 MyException?
【问题讨论】:
-
我不认为你可以。
-
用例?我看不出不允许回调处理自己的异常背后的原因,这个回调本来是第一个抛出异常的回调。
-
@Devon 我怀疑用例是回调使用他的库,并且库抛出异常。
-
我唯一能想到的就是不要让它成为
Exception的子类。那么如果他的代码有catch(Exception $e),它就不会捕获它。 -
@Barmar 没错。我希望回调不知道错误的含义。我只想回调停止并返回库,以便它可以处理问题。