7.6.2 处理异常的语法

前面在介绍PL/SQL块结构时已经说过,PL/SQL有声明部分、执行体部分和异常部分。异常通常都发生在执行体部分,处理部分在PL/SQL块的最下方。其语法格式如下:


01 EXCEPTION

02 WHEN exception1[OR exception2…]THEN—异常列表

03 statement[statement]…—语句序列

04 [WHEN exception3[OR exception4…]THEN—异常列表

05 statement[statement]…]

06 [WHEN OTHERS THEN

07 statement[statement]…]


【代码解析】

❑第1行的EXCEPTION表示声明异常块部分,它是异常处理部分开始的标志。

❑第2行的WHEN后面接异常名称列表,THEN后面接语句序列,也就是说发生的异常和异常列表里的异常相匹配时,可以执行指定的语句序列,以完成善后操作。

❑允许多个WHEN关键词。

❑第6行的WHEN OTHERS THEN语句通常是异常处理的最后部分,它表示如果抛出的异常在前面没有被捕获,那么将在这个地方被捕获。该语句可以不用,但不被捕获的异常会传递到主机环境。

Oracle中的异常可以分为三类:

❑预定义异常;

❑非预定义异常;

❑自定义异常。

其中,预定义异常和非预定义异常都与Oracle中的错误有关,当出现错误时会自动触发,而自定义异常与Oracle的错误没有关系,它是人为的为某种特殊情况定义的异常,也不会自动触发,需要显式的操作来触发。