
cout <<"x / y = " <<(x / y) <<endl
if (y == 0) {
throw runtime_error("y must not be 0")
}
这俩句 换下位置。
不是 catch只是为了捕获到异常而进行处理 如果你不需要处理异常的话 就不用try-catch了 直接throw就可以了 或者是你觉得可能会有异常 但是这异常是由于程序解决不了的 不如数据库链接不上了 那你就throw异常 然后输出异常就可以了 !异常处理允许用户以一种有序的方式管理运行是出现的错误。使用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()终止用户程序,但如果用户愿意,则可以定义自己的终止处理程序。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)