异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持,在C++语言中,异常处理包括:
*throw表达式(throw expression),异常检测部分使用throw表带是来表示它遇到的了无法处理的问题,我们说throw引发了异常。
*try语句块(try block),异常处理部分使用try语句处理异常。try语句块以关键字try开始,并以一个或多个catch自居结束。try语句快中代码抛出的异常通常会被某个catch自居处理。因为catch自居”处理“异常,所以它们也被称作异常处理代码。
*一套异常类(exception class),用于在throw表达式和相关的catch自居之间传递异常具体信息。
例子:
编写一段程序,从标准输入读取两个整数,输出第一个数除以第二个数的结果,使用try语句块去捕获异常。当第二个数是0时跑出异常,catch子句应该为用户输出一条提示信息,询问其是否输入新数并重新执行try语句块的内容。
#include
<iostream>
using
namespace
std;
int
main()
{
int
a,b;
cout<<
"please input two integers\n"
;
while
(cin>>a>>b)
{
try
{
if
(b == 0)
throw
runtime_error
(
"分母不能为0"
);
//抛出异常
cout<<
static_cast
<
double
>(a) / b<<endl;
cout<<
"please input two integers"
<<endl;
}
catch
(
runtime_error
err) {
//捕获异常
cout<<err.what()<<endl;
cout<<
"Try again\nplease input two integers"
<<endl;
}
}
return
0;
}
Static 局部静态变量
#include
<iostream>
using
namespace
std;
size_t
add(
int
n
)
{
static
size_t
cnt = 0;
//size_t cnt = 0;输出答案0,1,2,3,。。。9;
cnt +=
n
;
return
cnt;
}
int
main()
{
size_t
i;
for
(i = 0;i != 10;++i)
{
cout<<add(i)<<endl;
}
return
0;
}