电脑可以抽象成一个 “输入 =》 处理 =》 输出”的模型。在标准输入输出模型里面,定义了 stdin(0), stdout(1) 和 stderr(2)。
对于程序而言,也可以做同样的抽象,如下图。
写程序的人,希望自己的代码行云流水(只处理正确流程)。但是,大家都知道,可以预见、以及未能预见的错误,总是不断出现。所以怎么去处理错误,是值得好好研究的。
异常是个有争议的东西。喜欢的人认为它是一个处理错误流程的好方式,不喜欢的人认为它扰乱了程序流程,使得代码难以跟踪。也有一些人觉得异常会影响性能。这个作者认为并不是一个关键因素。
作者本人是比较喜欢使用异常的。原因下面几个:
然而,凡事都是双面的。exception有它的问题:
这部分的目的,是给出一些实践方式。因为作者php比较熟练,所以使用php来演示逻辑。
定义exception类
定义 Base_Exception (继承重写 Exception)
定义 Exception_Db (继承 Base_Exception)
定义 Exception_Param (继承 Base_Exception)
外层分类别catch
try {
// main process
} catch (Exception_Param $param_e) {
// handle
} catch (Exception_Db $db_e) {
// handle
} catch (Base_Exception $unkown_e) {
// unkown error handle
}