作者:子宇24 链接:https://www.cnblogs.com/dishengAndziyu/p/10920150.html
1、本文介绍一个新的概念,它是一个重要的概念,并且是 C++ 中的一个高级主题;
2、问题:
3、异常规格说明:
void func1();
/* 只能抛出的异常类型:char 和 int */
void func2() throw(char, int);
/* 不抛出任何异常 */
void func3() throw();
4、异常规格说明的意义:
5、如果抛出的异常不在声明列表中,会发生什么?
6、下面的代码输出什么?
7、异常规格之外的异常编程实验:
#include <iostream>
using namespace std;
void func() throw(int)
{
cout << "func()";
cout << endl;
throw \'c\';
}
int main()
{
try
{
func();
}
catch(int)
{
cout << "catch(int)";
cout << endl;
}
catch(char)
{
cout << "catch(char)";
cout << endl;
}
return 0;
}
8、unexpected() 函数说明:
9、unexpected() 函数的替换:
10、自定义 unexpected() 函数编程实验:
#include <iostream>
#include <cstdlib>
#include <exception>
using namespace std;
void my_unexpected()
{
cout << "void my_unexpected()" << endl;
// exit(1); // 退出;
throw 1;
}
void func() throw(int)
{
cout << "func()";
cout << endl;
throw \'c\';
}
int main()
{
set_unexpected(my_unexpected);
try
{
func();
}
catch(int)
{
cout << "catch(int)";
cout << endl;
}
catch(char)
{
cout << "catch(char)";
cout << endl;
}
return 0;
}
11、小结: