使用异常来处理用户生成的错误是否可接受或明智?比如...
try
{
$job->authorise($user);
}
catch (InsufficentCreditException $e)
{
return E_INSUFFICIENT_CREDIT;
}
catch (PermissionDeniedException $e)
{
return E_PERMISSION_DENIED;
}
或仅为更严重的错误保留的例外(如找不到文件,除零)?
答案 0 :(得分:6)
糟糕的用户输入绝不是例外。这是常态!
但是说真的。例外情况适用于特殊情况,来自外部来源的错误/不正确数据通常不例外。
答案 1 :(得分:0)
如果我理解你的上述用例,我认为'InsufficentCreditException'是一个很好的理由。程序的所有正向流程都可以自上而下处理,正面的任何“例外”都是失败,因此也是例外。
Mitch说,'糟糕的用户输入绝不是例外'而'来自外部来源的错误/不正确的数据通常不是例外',但如果您处于'按合同计划',那就是这种情况。抛出异常比从外部来源收到的无效数据有什么更好的理由?
最后一点,您的问题与您的用例不符。信用不足通常不是由用户生成的错误引起的。明确的因果关系会使这更容易回答。