002抛出异常但是不进行处理导致程序中断

#include<iostream>
using namespace std;
//1 基本语法 
//2 发生异常之后,异常是跨函数 :
//3 接受异常以后 可以不处理,再次抛出异常
//4 catch异常的时 按照类型进行catch
//5 异常捕捉严格按照类型匹配
void divide(int x, int y)//除法,除数不能为0
{
	if (y == 0)
	{
		throw x;//抛出int类型异常
	}
	cout << "divide的结果是:" << x / y << endl;
}
void myDivide(int x, int y)
{
	try
	{
		divide(x, y);
	}
	catch (...)//其他未知类型的异常,没有考虑到的异常类型
	{
		cout << "我接受了divide类型的异常,但是我没有处理,向上抛出" << endl;
		throw;
	}
}
int main(void)//异常时跨函数执行的
{
	//有try一定要有catch语句,抛出异常但是不进行处理导致程序中断	
	myDivide(10, 0);//执行到抛出异常语句的时候会中断
	
	system("pause");
	return 0;
}
/*
1) 若有异常则通过throw操作创建一个异常对象并抛掷。
2) 将可能抛出异常的程序段嵌在try块之中。控制通过正常的顺序执行到达try语句,然后执行try块内的保护段。
3) 如果在保护段执行期间没有引起异常,那么跟在try块后的catch子句就不执行。程序从try块后跟随的最后一个catch子句后面的语句继续执行下去。
4) catch子句按其在try块后出现的顺序被检查。匹配的catch子句将捕获并处理异常(或继续抛掷异常)。
5) 如果匹配的处理器未找到,则运行函数terminate将被自动调用,其缺省功能是调用abort终止程序。
6)处理不了的异常,可以在catch的最后一个分支,使用throw语法,向上扔。



*/

猜你喜欢

转载自blog.csdn.net/baixiaolong1993/article/details/89496025