技术栈

主页 > 数据库 >

PLSQL自定义EXCEPTION异常分类讲解

技术栈 - 中国领先的IT技术门户

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; 这样的语句,这样就忽略了所有未知错误。

责任编辑:admin  二维码分享:
本文标签: 错误异常exception处理自定义开发人员