Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在方法或调用方法中引发异常_Php_Oop_Exception_Stack Trace - Fatal编程技术网

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,但这条线有点模糊。我的意思是什么时候它会“把外部的范围逼到角落”。因为在这两种情况下都涉及外部范围。我想这个问题没有明确的答案。不过我还是发了帖子,因为我想听听人们对此的想法。谢谢你的阅读!