异常处理是由三个关键所组成的程序块(在oracle中 PL/sql程序块必须包括哪几部分)

本文目录
在oracle中 PL/sql程序块必须包括哪几部分
oracle中 PL/sql程序块必须包括声明部分,可执行部分,异常处理部分。
PL/SQL程序都是以块(block)为基本单位。整个PL/SQL块分三部分:声明部分(用declare开头)、执行部分(以 begin开头)和异常处理部分(以exception开头)。
其中执行部分是必须的,其他两个部分可选。无论PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。而且每条语句均由分号隔开。
PL/SQL基础的块结构
PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL 程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。与其他语言相同,变量在使用之前必须声明,PL/SQL提供了独立的专门用于处理异常的部分,下面描述了PL/SQL块的不同部分:
声明部分(Declaration section)
声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分;需要说明的是游标的声明也在这一部分。
执行部分(Executable section)
执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。
异常处理部分(Exception section)
这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论我们在后面进行。
PL/SQL块语法
---declaration statements
BEGIN
---executable statements
---exception statements
END
PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以使多行的,但分号表示该语句的结束。一行中可以有多条SQL语句,他们之间以分号分隔。每一个PL/SQL块由BEGIN或DECLARE开始,以END结束。注释由--标示。
PL/SQL块的命名和匿名
PL/SQL程序块可以是一个命名的程序块也可以是一个匿名程序块。匿名程序块可以用在服务器端也可以用在客户端。
命名程序块可以出现在其他PL/SQL程序块的声明部分,这方面比较明显的是子程序,子程序可以在执行部分引用,也可以在异常处理部分引用。
PL/SQL程序块可背独立编译并存储在数据库中,任何与数据库相连接的应用程序都可以访问这些存储的PL/SQL程序块。ORACLE提供了四种类型的可存储的程序:
. 函数
. 过程
. 包
. 触发器
C/C++异常处理
这个很难说清楚,基本上就是:
try
{
//.......
throw ...
}
catch()
{
//......
}
也就是一个程序段要抛出一个异常,然后要写一个相应的catch代码来捕获这个相应的异常。抛出的异常类型要与紧跟在try代码块之后的catch代码的形参相对应。一个try程序块之后可以紧跟多个catch程序块,但必须保证在try程序块中得抛出一个与之后catch代码的形参列表所匹配的异常类型。
比如说你在try代码块内抛出一个int 类型的异常,那么在紧跟其后的catch代码块的形参列表中就应该是一个int类型。最后catch代码块在捕获了这个抛出的异常后就可以对这个异常做处理,同时也可以再抛出一个异常。
下面给一个我为楼主写的例子,楼主可以看一下。这是一个求二次方程两个根的问题,里面就用到了异常的抛出与捕获。
#include《iostream》
#include《math.h》
using namespace std;
double Quadratic(double A,double B,double C,bool choose)
{
if(A)
{
if((B*B-4*A*C)《0)
throw "Error";
else
if(choose)
return ((-1)*B+sqrt(B*B-4*A*C))/(2*A);
else
return ((-1)*B-sqrt(B*B-4*A*C))/(2*A);
}
else
throw C/((-1)*B);
}
int main()
{
try
{
double A,B,C;
cout《《"Enter three number:";
while(!(cin》》A》》B》》C).eof())
{
cout《《"The answer is:"《《Quadratic(A,B,C,1)
《《"And"《《Quadratic(A,B,C,0)《《’\n’;
cout《《"Enter the next three number:";
}
}
catch(char *ptr)
{
cout《《ptr《《’\n’;
}
catch(double answer)
{
cout《《"The answer is:"《《answer《《’\n’;
}
return 0;
}
代码可能写的不太好,看不明白的可以追问。
while(!(cin》》A》》B》》C).eof())是用来判断是否结束输入的。去掉.eof()就只能输入一次A,B,C参数了。另外这个例子也是我临时想出来的,或许不大有代表性,实际应用里的例子我现在也找不到,不好意思了
.eof()是判断数据流是否输入完毕。如果输入完毕则返回1,没有输入完毕就返回0。如果你不想用.eof()的话就把那个while循环去掉就可以了。
c++中异常的处理机制是什么
异常处理允许用户以一种有序的方式管理运行是出现的错误。使用C++的异常处理,用户程序在错误发生时可自动调用一个错误处理程序。异常处理最主要的优点是自动转向错误处理代码,而以前在大程序中这些代码是由“手工”编制的。
注:异常处理不属于C++原始规范的范畴。它是在1983年间发展起来的。异常处理由建
议的ANSI C++标准定义,被现存大多数C++编译程序所支持。
C++异常处理建立在三个关键字基础之上:try、catch和throw。
通常,监测异常情况的程序语句包含在try中。如果try块中发生了异常(也就是错误),则用throw处理。异常由catch捕获,并得到处理。
下面详细讨论这些论点。
抛出异常的语句必须在try块中执行(在try块中调用的函数也可能抛出异常)。任何异常必须由紧跟在抛出异常的try语句之后的catch语句捕获。
try和catch的一般形式如下:
try{
// try block
}
catch(type1 arg){
//catch block
}
catch (type2 arg){
// catch block
}
catch(type3 arg){
// catch block
}
catch(typeN arg) {
// catch block
}
try块必须包括用户程序中监测错误的部分。它们可以短至函数中的几条语句,也可以是象try块(有效地监测整个程序)中main()函数的代码那样完全包装。
异常发生时,由相应的catch语句去捕获并处理此异常。与一个try相关的catch语句可能不止一条。至于使用哪条catch语句,则由异常的类型决定。也就是说,如果由catch语句说明的数据类型与异常情况匹配,则此catch语句(其它catch语句跳过)执行。当捕获一个异常时,arg将接受它的值。可以捕获任何类型的数据,包括用户创建的类。如果try块中无异常(错误)发生则不执行任何catch语句。
throw语句的一般形式如下:
throw exception;
throw必须在try块中或在try块中任何直接或间接调用的函数中执行。exception是被抛出的一个值。
如果对于抛出的异常没有合适的catch语句,则会发生程序异常终止。如果用户的编译程序符合建议的ANSI C++标准,那么抛出一个未被处理的异常会引起调用terminate()函数。缺省时,terminate()调用abort()终止用户程序,但如果用户愿意,则可以定义自己的终止处理程序。

更多文章:
phpinfo(如何创建和查看phpinfo,phpinfo空白问题解决方法)
2025年6月10日 05:30
北京嵌入式培训班(七月份想去北京参加嵌入式培训,目前自己看了几个培训机构:千锋,凌阳,华清远见希望参加过培训的朋友)
2025年6月15日 20:30
学ug好还是solidworks好(solidworks与ug哪个更好学)
2026年4月23日 22:00
intellijidea如何升级(intellij idea 怎么让class自动更新到war)
2026年3月23日 11:00
sweet英语是什么意思?switch不能作用在string上面
2025年12月28日 17:00
数据库系统工具是什么(请问数据库系统软件有哪些,具体细节介绍一下)
2026年6月7日 14:45
protectedimage文件夹删除不了(文件夹删除不了怎么办)
2026年5月12日 12:15
datagridview不可编辑(如何设置datagridview可编辑)
2026年7月27日 22:30
powermill三轴主轴mtd文件(DXF文件直接转换为G代码,然后三轴雕刻机加工)
2026年7月5日 18:00
html文本区域怎么写(HTML文本区域区域带工具栏怎么做)
2026年2月6日 21:15
randomize在c语言(c语言怎样产生两个不同的随机数)
2025年11月8日 05:45











