使用throw抛出异常
本人节选自《21天学通C++》一书
抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:
throw 表达式;
如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重要。
【范例20-2】处理除数为0的异常。该范例将上述除数为0的异常可以用try/catch语句来捕获异常,并使用throw语句来抛出异常,从而实现异常处理,实现代码如代码清单20-2所示。
代码清单20-2
1 #include<iostream.h> //包含头文件
2 #include<stdlib.h>
3 double fuc(double x, double y) //定义函数
4 {
5 if(y==0)
6 {
7 throw y; //除数为0,抛出异常
8 }
9 return x/y; //否则返回两个数的商
10 }
11 void main()
12 {
13 double res;
14 try //定义异常
15 {
16 res=fuc(2,3);
17 cout<<"The result of x/y is : "<<res<<endl;
18 res=fuc(4,0); //出现异常
19 }
20 catch(double) //捕获并处理异常
21 {
22 cerr<<"error of dividing zero./n";
23 exit(1); //异常退出程序
24 }
25 }
【运行结果】在Visual C++中新建一个【C++ Source File】文件,输入上述的代码,编译无误后运行。
【范例解析】上述代码中,在主函数main()的第14~19行中使用了try语句定义异常,其中包含3条有可能出现异常的语句,它们为调用两个数相除的函数。在代码的第20~24行定义了异常处理,即捕获异常后执行该段代码中的语句。此外,在函数fuc()的代码5~8行通过throw语句抛出异常。
注意:一般来说,throw语句通常与try- catch或try-finally语句一起使用,可以使用throw语句显式引发异常。
分享到:
相关推荐
java throw抛出异常实例二 java throw抛出异常实例二
21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21.javathrow抛出异常对象.zip21....
java throw抛出异常实例一 java throw抛出异常实例一
C++ 异常抛出实例: 用代码详细阐述异常抛出的具体过程。
主要介绍了C++中异常处理的基本思想及throw类抛出异常的使用,也深入谈到了异常被抛出后的栈解旋unwinding过程,需要的朋友可以参考下
主要介绍了Java编程中使用throw关键字抛出异常的用法,是Java入门学习中的基础知识,需要的朋友可以参考下
Java异常处理--throw手动抛出异常对象
(3)对抛出的异常使用try-catch进行异常处理。 实践二:使用try-catch-finally进行异常处理 需求说明 (1)对实践1的异常使用try-catch-finally进行异常处理 (2)在finally块输出是否抛出了异常 实现思路及关键...
C++语言处理异常 try catch throw,带程序例子
异常(Exception)一般分为两大类SystemException、ApplicationException,前者是预定义的异常类,后者是用户自定义异常类时需要继承的类 简单自定义异常类Demo using System; using ...
前言 在android开发过程中,我们经常遇到异常的问题,崩溃抛出异常的时候,是非常令人烦闷的。但是异常有一个好处,使得app能在编译的时候给我们提供一些... throw:抛出异常,一般是一个具体的异常。放置在方法体内
第5章 异常处理;回顾;本章内容;5.1 异常概述;5.1 异常概述;5.1 异常概述;5.1.1 程序中的异常;5.1.2 异常分类;5.1.2 异常分类;5.1.2 异常分类;...5.3.2 使用throw抛出异常;5.3.2 使用throw抛出异常;5.3.
Java 自定义异常和抛出异常的练习demo
如果传入的数字为负数,我们使用 throw 语句抛出一个 std::runtime_error 类型的异常,表示遇到了负数。如果传入的数字为零,我们抛出一个 MyException 类型的异常,这是我们自定义的异常类。如果传入的数字为正数,...
如果要想使一个catch block能抓获多种数据类型的... //这里抛出一个异常(其中异常对象的数据类型是int,值为1) throw 1; } //catch( int& value ) //注意这里catch语句 catch( …) { cout << “在 catch(…) b
225 11.3 抛出异常 225 11.3.1 抛出异常的简单介绍 225 11.3.2 使用throws和throw语句抛出异常 227 11.4 自定义异常 227 11.4.1 创建和使用自定义异常类 227 11.4.2 自定义异常的实际应用 228 11.5 综合练习 231 ...
主要介绍了C++编程中异常相关的堆栈展开和throw()异常规范,throw()规范部分文中结合了C++11标准的新特性来讲,需要的朋友可以参考下
这是一种异常规范,只会出现在声明函数时,表示这个函数可能抛出任何类型的异常。 void fun() throw(); //表示fun函数不允许抛出任何异常,即fun函数是异常安全的。 void fun() throw(…); //表示fun函数可以抛出...