sanmai/trycatch

此包已被废弃,不再维护。未建议替代包。

异常处理调用包装器

v0.3.2 2020-12-28 15:32 UTC

README

Latest Stable Version Build Status Coverage Status

为闭包和其他可调用对象提供的异常处理调用包装器。

使用方法

假设你将闭包传递给配置某些依赖项或执行其他平凡任务

$object->setCallback($someCallback);

然后你突然发现你的回调在这里那里开始抛出异常。你从无法控制的地方获得了回调,因此你无法真正改变它的行为。

现在,如果你想优雅地处理某些类型的异常,你可以这样操作

$retval = $object->setCallback(\TryCatch\TryCatch::wrap($yourCallback)
  ->whenFailed(function (\Exception $e, $a, $b) {
    if ($e instanceof SpecificException) {
        // handle this one gracefully
        return null;             
    } elseif ($a > $b) {
        // else check for rogue callback's arguments
    }

    throw $e;
});
// $retval will be null in case of SpecificException being caught

你还可以查看传递给回调的参数。

请参阅测试用例以获取更多示例。

安装

composer require sanmai/trycatch