【发布时间】:2016-02-14 22:39:42
【问题描述】:
这是我定义异常的 PL/SQL 块的一部分。当我的数据不包含任何异常时它运行正常,但在有异常时会生成错误消息。错误信息如下:“ORA-20001:分数更改无效。 ORA-06512:在第 59 行 ORA-06512: 在第 73 行"
我想知道它出了什么问题。有谁可以帮我离开这里吗?谢谢。
begin
if (newpoints<0 or newpoints>maximumpoints) then
raise invalid_score_change;
end if;
exception
when invalid_score_change then
raise_application_error(-20001,'Invalid score change.');
end;
【问题讨论】:
-
您对编程的实际期望是什么?
-
这正是你告诉它做的事情。有什么问题?
-
我在上面简化了我的代码。通常,当 newpoints 小于 0 或大于 maximumpoints 时,我想引发异常错误消息。但它有错误消息 ORA-06512。
-
它首先有你的 ORA-20001。其余的是异常堆栈,显示它是在哪里引发的。
-
如果您有一个调用块并且出于某种原因想要隐藏堆栈跟踪,那么the second half of this answer 可能会给出一些指示。我以为我写了一个例子,但找不到。 The article it links to 解释了您所看到的、预期的和通常可取的。如文章所示,报告或存储此类预期异常可能是使用
format_error_stack的正当理由。