之前对抛出的作用的理解是,是逻辑处理层和异常处理层分离。如果不是这样,那么直接用 if...else 语句或者自己写一个不用继承 Exception 的类都可以达到目的了(比如记录日志)。
但是 php 中异常要 throw 才能 catch ,但是 throw 的时候感觉避免不了 if...else ,这样感觉这个 throw 有点多余啊?还是我的理解有问题 ?
比如这两种,有什么区别?
try {
if (...) {
throw new Exception();
}
} catch (Exception $e) {
...
}
if (...) {
MyException::log() // 记录或者处理
}
如果不用 throw 就确实能把逻辑处理层和异常处理分离开
try {
...
} catch (AException $e) {
...
} catch (BException $e) {
...
} ...