【C++温故知新】(八)异常处理

本文深入解析C++异常处理机制,包括throw、try、catch关键字的使用,以及如何定义和捕获自定义异常,是理解C++错误处理不可或缺的指南。

异常的抛出与捕获

异常是程序在执行期间产生的问题,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:trycatchthrow

  • throw:当问题出现时,程序抛出一个异常
  • catch:在想要处理问题的地方,通过异常处理程序捕获异常
  • try:try块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。

使用throw可以在一些特定的时候令程序抛出异常,比如当遇到除数是0的时候:

if(division == 0)
	throw "division by zero condition!";

一个try……catch的写法通常是这这样的:

try
{
	// protected codes
}
catch( ExceptionName e1 )
{
	// catch block
}
catch( ExceptionName e2 )
{
	// catch block
}

如果要捕获所有的异常,则需要在catch的括号中使用省略号:

try
{
	// protected codes
}
catch( … )
{
	// catch block
}

定义新的异常

可以通过继承和重载exception类来定义新的异常,比如像下边这样:

struct MyException : public exception
{
	const char * what() const throw()
    {
    	return "New Exception";
    }
};
 
try
{
	throw MyException();
}
catch ( MyException& e)
{
    cout << "MyException caught" << endl;
    cout << e.what() << endl;
}
catch (exception& e)
{
	// other exceptions
}

转载请注明出处,本文永久更新链接:https://blogs.littlegenius.xin/2019/08/28/【C-温故知新】八异常处理/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值