oracle异常(预定义异常,自定义异常)应用介绍


在Oracle数据库中,异常处理是PL/SQL编程的一个重要组成部分,它用于处理运行时错误。异常可以分为两大类:预定义异常和自定义异常。

### 预定义异常

Oracle PL/SQL提供了一系列的预定义异常,这些异常覆盖了常见的运行时错误,如除零错误、值超出范围等。当PL/SQL代码执行过程中遇到这些情况时,Oracle会自动抛出相应的预定义异常。

**示例**:

plsql BEGIN -- 尝试除以零,这将引发VALUE_ERROR异常 DECLARE v_result NUMBER; BEGIN v_result := 10 / 0; EXCEPTION WHEN ZERO_DIVIDE THEN DBMS_OUTPUT.PUT_LINE('除数不能为0'); END; END;

注意:上面的`ZERO_DIVIDE`是假设的预定义异常名,实际上Oracle使用`VALUE_ERROR`异常来捕获除零错误,因为除零不仅涉及除数问题,还可能涉及数据类型转换等问题。但这里只是为了说明如何捕获和处理预定义异常。

### 自定义异常

当预定义异常不能满足需求时,可以定义自己的异常。自定义异常需要先声明,然后在需要的地方抛出,并在异常处理部分捕获和处理。

**示例**:

plsql DECLARE -- 声明自定义异常 e_invalid_age EXCEPTION; -- 声明变量 v_age NUMBER := -5; BEGIN -- 检查年龄是否有效 IF v_age < 0 THEN RAISE e_invalid_age; -- 抛出自定义异常 END IF; -- 其他逻辑... EXCEPTION WHEN e_invalid_age THEN DBMS_OUTPUT.PUT_LINE('年龄无效'); END;

在这个例子中,`e_invalid_age`是自定义的异常,用于表示年龄无效的情况。当`v_age`变量的值小于0时,通过`RAISE`语句抛出这个异常,并在`EXCEPTION`部分捕获和处理它。

总结来说,预定义异常和自定义异常在Oracle PL/SQL中都扮演着重要的角色,它们使得PL/SQL程序能够优雅地处理运行时错误,提高程序的健壮性和可维护性。