try块和异常处理
1.异常处理
1)throw表达式
错误检测部分使用了这种表达式说明遇到了不可处理的错误,throw引发了异常条件。
2)try块
错误处理部分使用它处理异常。try语句块以try关键字开始,并以一个或多个catch子句结束。在try块中执行的代码所抛出的异常,通常会被其中一个catch子句处理。catch子句也称为处理代码。
2)由标准库定义的一组异常类,用来在throw和相应的catch之间传递有关的错误信息。
2.throw表达式
系统通过throw表达式抛出异常。throw表达式由关键字throw以及尾随的表达式组成。
if(!item1.same_isbn(item2))
{throw runtime_error("Data must refer to same ISBN");
}
std:cout << item1+item2 << ::endl;
这段代码检查ISBN对象是否不相同,如果不相同,停止程序的执行,并将控制转移给处理这段错误的处理代码。
runtime_error类型是标准库异常类中的一种,在stdexcept头文件中定义。
3.try块
try{program-statements
}catch(exception-specifier){
handler-statements
}catch(exception-specifier){
handler-statements
}
以关键字try开始,后面是用花括号括起来的语句序列块。try块后面是一个或多个catch子句。
每个catch子句包括三个部分:关键字catch,圆括号内单个类型或者单个对象的声明——称为异常说明符,以及通常用花括号括起来的语句块。
try语句内的program-statement形成程序的正常逻辑。
while(cin >> item1 >> item2){
//执行相加两个Sales_items对象
//如果相加失败,throw一个runtime_error表达式
}catch(runtime_error err){//提醒用户ISBN必须匹配并且cout << err.what()<<“\n Try Again?Enter y or n” <<endl;char c;cin >> c;if(cin && c == 'n')break;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
