1、PL/SQL程序异常介绍
像java程序一样,pl/sql也会存在异常,其异常可分为两类:一类是编译错误,由 PL/SQL编译器发出错误报告,另一类是运行时错误,由PL/SQL运行时引擎发出报告。由于编译错误主要是语法方面 的错误,如果不修改程序就无法执行,因此该错误可以由程序 员来修改;运行时错误可能是由设计错误、代码错误、硬件错误,以及运行环境的变化等原因引起的,因此运行时错误无法完全避免。
2、使用异常处理的优点
在PL/SQL程序中使用异常处理机制可以使编写的程序更 简单易懂,减少错误被遗漏处理的概率。如果没有异常处理, 用户必须检查每一个可能的错误,以及每一个可能发生错误的 位置,并进行相应处理。但是,对于那些不能马上检测到的错 误(例如,由于运行条件改变导致的错误),错误及其可能发 生的位置很容易被忽略。此外,错误处理的代码分散在程序的 不同位置,导致程序可读性较差。
在采用异常处理机制后,用户不需要知道每一个可能发生 的错误,以及错误可能发生的每一个位置,只需要在可能出现 错误的PL/SQL块中增加一个异常处理部分就可以了。在异常 处理部分,可以对指定的或未知的错误对应的异常进行捕获处 理。对当前块及其子块中任何位置的错误,异常处理器都可以 进行处理。PL/SQL块异常处理部分可以有多个异常处理器, 各个异常处理器之间是相互独立的。
3、异常的类型
Oracle运行时错误可以分为Oracle错误(Oracle错误都有一 个内部的错误代码)和用户定义错误。与之对应,异常分为:
1、预定义异常:
对应于常见的Oracle错误,PL/SQL内部为 错误起了一个异常名称。例如,错误ORA-06500(PL/SQL存 储错误)对应的预定义异常名称为STORAGE_ERROR。当错 误发生时,系统隐式(自动)抛出该异常。常见预定义异常如下:
2、内部定义异常。
内部定义异常与预定义异常类似,对应 一个Oracle错误,不同在于系统没有为该错误预定义异常名 称,需要用户定义一个异常名称与该错误绑定。在错误发生 时,系统隐式抛出错误对应的异常。例如,Oracle错误ORA- 00060(死锁)、ORA-27102(内存溢出)。
3、用户定义异常。
用户定义异常对应于用户定义错误,由 用户显式抛出。