打个比方,你可以认为C++异常作为Java运行时异常或错误。
在Java中,错误和运行时异常可选择在签名和指定的,但是他们从来没有强制性的处理。在C++中,通过指定它们,你可以执行异常检测,但即使编译器不支持此,根据教程。许多开发商认为检查异常在Java语言错误(可能是因为他们甚至在标准的API误用)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "math.h" // for sqrt() function
using namespace std;
// A modular square root function
double 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()终止与未处理的异常,操作系统会通知你,已发生未处理的异常错误。它是如何依赖于操作系统,但可能包括打印一个错误信息,弹出错误对话框,或简单的崩溃。一些操作系统是比别人少优雅。这通常是你想要完全避免!
抓住所有处理程序
2万+

被折叠的 条评论
为什么被折叠?



