我们有一个正在使用的标准,我们在主类中创建异常以返回错误等......问题是,所有标准嗅探都不喜欢这样。我们正在为此编写自己的嗅探,但我想我会问为什么这是不可取的?
例如,我们有:
<?php
class FOO_EXCEPTION extends Exception { }
class FOO_EXCEPTION_BAR extends FOO_EXCEPTION { }
class FOO_EXCEPTION_POLE extends FOO_EXCEPTION { }
class FOO
{
public function MethodDoingSomething()
{
if('some condition happens') {
throw new FOO_EXCEPTION_BAR();
}
if('some other condition') {
throw new FOO_EXCEPTION_POLE();
}
...
}
}
?>
这允许我们的代码返回不同的异常来指示调用者发生了什么,但是如果专用的 try/catch 不可用,则可能仍然会捕获基本的异常。
这在使用数据库或其他外部对象时会派上用场,因为错误的性质可能会返回到调用堆栈更高的组件以处理错误。
例如,如果您正在删除一个文件,而该文件不存在,则代码可能会抛出异常,但如果调用者不担心该文件不存在,则可以选择忽略此异常,因为它试图无论如何删除它。但是,另一个调用者可能会因缺少删除时假定存在的文件而出错。