我觉得php7之前所有的exception都是在runtime的时候抛出的,php7也并没有使用Exception类来处理parse-time的异常,而是使用的Error类(直接实现Throwable),那这两个异常从意义上来讲是不是一样呢?在实践中,如果要临时抛一个异常,不使用自定义异常的话,可不可以直接抛RuntimeException呢?自定义的异常是不是也可以直接继承RuntimeException呢?
(我看到symfony的有些地方确实是这么做的)
Exception thrown if an error which can only be found on runtime occurs.
手册上这么说。
要说用途,那就没什么区别。但就像Java里的RuntimeException和Exception的关系一样,Exception的类型主要是用于描述和区分不同类型的异常的。在需要分别处理不同类型的异常时尤为有用。
那么从意义上说,Exception是所有异常的基础,而RuntimeException意味着运行时异常,由于PHP不像Java那样存在强制异常申明和编译检查,所以直接使用Exception也并不意味着非要使用catch捕捉。