减去试块在main
来源:互联网 发布:成都软件学院 编辑:程序博客网 时间:2024/05/01 14:23
现在,你应该有怎样的例外工作合理的想法。在这节课中,我们将覆盖更多的一些有趣的例外情况。
未捕获的异常
在过去的几个例子,有相当多的情况下,函数假定其调用者(或另一个函数在调用堆栈)处理的例外。在下面的例子中,假设有人会mysqrt()处理异常,但如果没有人把究竟发生了什么?
这是我们的平方根程序再次,减去试块在main():
#include "math.h" // for sqrt() functionusing namespace std;// A modular square root functiondouble MySqrt(double dX){ // If the user entered a negative number, this is an error condition if (dX < 0.0) throw "Can not take sqrt of negative number"; // throw exception of type char* return sqrt(dX);}int main(){ cout << "Enter a number: "; double dX; cin >> dX; // Look ma, no exception handler! cout << "The sqrt of " << dX << " is " << MySqrt(dX) << endl;}
现在,让我们说,用户输入的4,和mysqrt(- 4)提出了一个例外。mysqrt()不处理异常,所以程序堆栈的减少及控制返回到main()。但没有异常处理程序,在这里,所以main()终止。在这一点上,我们就终止了我们的应用!
当main()终止与未处理的异常,操作系统会通知你,已发生未处理的异常错误。它是如何依赖于操作系统,但可能包括打印一个错误信息,弹出错误对话框,或简单的崩溃。一些操作系统是比别人少优雅。这通常是你想要完全避免!
抓住所有处理程序
现在,我们发现自己在一个condundrum:函数可以把任何数据类型的例外,如果没有捕获到异常,它会传播到你的程序的顶部,使其终止。因为不知道如何调用功能,甚至实现它是可能的,我们如何才能避免这种情况的发生?
幸运的是,C + +为我们提供了一个机制来捕获所有异常类型。这是被称为一个包罗万象的处理程序。一个捕获所有处理器的工作就像一个正常的CATCH块,除了可以用一种特定类型的捕捉,利用椭圆算子(……)作为型抓。如果你记得的教训7.14,椭圆和为什么要避开他们,椭圆以前用来传递任何类型的一个函数的参数。在这种情况下,他们所代表的任何数据类型的例外。这是一个简单的例子:
0 0
- 减去试块在main
- 静态代码块,构造代码块,super,this,main以及组合在jvm中执行先后顺序的疑惑
- main方法和静态块
- java 理解main方法&&代码块
- Main方法,语句,块的定义
- 在main()之前执行
- 跑在main之前
- postgreSQL 在日期的基础上增加年份再减去一天的方法
- 题目:在数组中,数字减去它右边的数字得到一个数对之差。
- linux shell 在给定日期上加上或者减去指定的天数
- java中代码块的执行顺序--静态代码块,构造器,普通代码块,构造块,main主函数
- 块元素在块元素垂直居中
- Java 静态代码块和Main函数的执行顺序
- 静态代码块 和 main 函数 谁先加载???
- iOS复习main.storybord制作 计算器与运动色块
- main中静态方法,静态块,构造方法执行顺序
- 在idea创建main快捷键
- static块和main方法以及main方法为什么用static来定义
- 1006. Sign In and Sign Out (25)
- 测试
- OgreRoot
- 跟着8张思维导图学习javascript
- 浅析Comet技术在Java Web实时系统开发中的应用
- 减去试块在main
- HDU 4764-Stone(博弈)
- 非预期的例外
- SUSE下安装openssl
- 异常说明符
- chrome插件 postman插件 接口测试、API & HTTP 请求调试工具
- Python 多级排序
- 储存webview 的 cookie
- jQuery中的Each