LogicException和RuntimeException的区别

36

我想知道PHP中何时使用哪个异常规则... 什么时候必须抛出LogicException,什么时候需要抛出RuntimeException

例如,对于像PageNotFoundException这样的异常,我应该继承哪个异常类呢?

1个回答

36

LogicException 看起来是用于进行“永远不可能发生”的错误检查:

代表程序逻辑中的错误异常。这种类型的异常应该直接导致您的代码进行修复。

一些其他的 SPL 异常,例如BadFunctionCallException,从它继承而来。

RuntimeException 是用于在程序运行时才能检测到的错误情况。这个命名是由编译型语言遗留下来的,因为在这种语言中,某些错误可以在编译时进行检测。像 LogicException 一样,其他一些 SPL 异常也从中继承而来。

除非你确定你的代码会产生继承层次结构中的另一个异常并且你想捕获其中任何一个特定的异常或所有异常,否则你可能不希望将它们作为自己特定扩展的基础。


1
那么在大多数情况下,我应该使用Exception作为我的自定义异常的基类? - Nedec
1
除非你有某种原因需要使用中间类型的异常,否则你应该只扩展基类。 - Charles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接