PLSQL自定义EXCEPTION异常分类讲解

PLSQL开发经常需要用到异常处理(exception)来做一些逻辑处理或者规避一些异常情况,PLSQL中专门有一个异常处理模块的语法来处理这个事情。

异常可以分成几类:

1.可以预期的数据错误

开发人员已经预料到自己的程序中可能发生的错误,比如主键重复、除数为0等,此时用异常处理来捕捉这些错误,并进行相应的处理,规避或者纠正错误。

2.不可预期的错误

开发人员并没有预料到的一些错误,比如应用程序端做了些变更,输入的数据规范与之前约定的不一致,从而导致之前并未主动捕捉的一些错误。

这种情况可以用exception when others来捕捉,建议把上下文相关的数据做日志,以便查找错误原因。

此时如果需要程序终止,则添加raise语句;如希望程序忽略错误,则不做raise处理即可。比如下面是一个比较常见的异常处理模块:

3.可以预期的逻辑错误

有些时候,数据本身并没有问题,但是从业务角度来看确实个错误数据。比如我们采集一个人的身份证号码,如果位数不是15或18位,那肯定是有问题的,又或者号码中的出生日期解析出来是1800年,估计也不正常。

这些错误可以定义为自定义异常,ORACLE中开放了-20000到-20999的错误代码作为自定义异常代码用开发人员使用。

在过程模块中可以用RAISE_APPLICATION_ERROR语句引发异常,比如下面的例子。

运行中结果中,就会出现ORA-20000的自定义异常提示

注意:

1.RAISE只能存在于exception代码块内部,在主程序中应该使用RAISE_APPLICATION_ERROR来引发异常。

2.不要写exception when others then null; 这样的语句,这样就忽略了所有未知错误。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐