Php 在方法或调用方法中引发异常
很抱歉标题含糊不清 我想知道在这种情况下最好做什么:Php 在方法或调用方法中引发异常,php,oop,exception,stack-trace,Php,Oop,Exception,Stack Trace,很抱歉标题含糊不清 我想知道在这种情况下最好做什么: $template = $loader->load('file'); if (!$template) { throw new \Exception('my custom exception'); } 这样保存会更好,还是在$loader->loader()方法中实际抛出异常会更好 我想如果你真的遇到了一个抛出的异常,就像在例子中一样,你总是会点击抛出异常的方法。因此,没有真正的理由让异常位于堆栈跟踪的更高位置 对此有何想法?
$template = $loader->load('file');
if (!$template) {
throw new \Exception('my custom exception');
}
这样保存会更好,还是在$loader->loader()
方法中实际抛出异常会更好
我想如果你真的遇到了一个抛出的异常,就像在例子中一样,你总是会点击抛出异常的方法。因此,没有真正的理由让异常位于堆栈跟踪的更高位置
对此有何想法?当您可以让方法实际实现异常时,为什么要在堆栈跟踪的更高层捕获异常?我的观点是,方法必须遵守契约,否则就会死亡。 每次获取对象作为输入时,都必须检查它是NULL还是有效的对象引用。如果忘记检查,
NullPointerException
可能会中断运行时的执行。因此,您的逻辑会被多重检查和if/then/else分叉所污染,正如您上面所描述的
为什么null不好您可以阅读这取决于具体情况。例如,如果它是file not found异常,则应该在load方法中抛出它。如果它涉及到外部范围,它应该被抛出外部范围等@patryk uszynski True,但这条线有点模糊。我的意思是什么时候它会“把外部的范围逼到角落”。因为在这两种情况下都涉及外部范围。我想这个问题没有明确的答案。不过我还是发了帖子,因为我想听听人们对此的想法。谢谢你的阅读!