【发布时间】:2017-06-02 01:32:07
【问题描述】:
现在我在编写代码时通常会这样做
function changeBookAuthor(int $id, string $newName){
if(!$newName){
throw new MyAppException('No author name was provided');
}
$book = Books::find($id);
if(!$book){
throw new MyAppException('The provided book id could not be found');
}
}
在我们看到的 laravel 文档中:
https://laravel.com/docs/5.4/errors
public function report(Exception $exception)
{
if ($exception instanceof CustomException) {
//
}
return parent::report($exception);
}
现在如何正确处理异常?它们都是相同的例外,它们也没有代码。我应该提供错误代码吗?
php 异常的问题在于它们使用整数。是很烦人的恕我直言。最好将'changeauthor_bookid_notfound' 作为代码而不是随机数。我应该为每个异常创建一个异常类吗?例如不重用MyAppException,这似乎有点乏味。我会有一万亿个课程。
现在,如果对于特殊异常,我想用我的代码进行特殊处理,我不能轻易做到。我没有要检查的代码(例如$exception->code == 3331 then do special),我也没有自定义异常类
什么是处理这种情况的成熟可靠的方法? 代码,每个错误的新类,还有其他东西?
如果提供代码,有什么好的方法呢?
【问题讨论】:
-
感觉你在这里过度使用了异常。您为每次失败的检查抛出异常。您不一定需要所有异常中的错误代码。您可以将单个异常与不同的消息一起使用,然后在处理异常时使用该消息。如果您计划显示自定义错误/页面,您还需要处理
render方法中的异常。report方法仅用于错误报告和日志记录。
标签: php laravel exception laravel-5 exception-handling