欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PLSQL自定义EXCEPTION异常分类讲解

程序员文章站 2022-04-23 16:25:06
PLSQL开发经常需要用到异常处理(exception)来做一些逻辑处理或者规避一些异常情况,PLSQL中专门有一个异常处理模块的语法来处理这个事情。 异常可以分成几类: 1....

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

异常可以分成几类:

1.可以预期的数据错误

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

2.不可预期的错误

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

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

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

PLSQL自定义EXCEPTION异常分类讲解

3.可以预期的逻辑错误

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

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

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

PLSQL自定义EXCEPTION异常分类讲解

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

PLSQL自定义EXCEPTION异常分类讲解

注意:

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

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