目录
前言
在c语言中我们只能使用传统的返回错误码方式来处理错误,有时候会很不方便。所以在c++中增加了异常这一特性。
1、C语言传统的处理错误的方式
传统的错误处理机制:
- 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。
- 返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误实际中C语言基本都是使用返回错误码的方式处理错误,部分情况下使用终止程序处理非常严重的错误。
2、C++异常概念
异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的
直接或间接的调用者处理这个错误。
- throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。
- catch: 在您想要处理问题的地方,通过异常处理程序捕获异常.catch 关键字用于捕获异常,可以有多个catch进行捕获。
- try: try 块中的代码标识将被激活的特定异常,它后面通常跟着一个或多个 catch 块。
我们一般把异常定义成一个类,里面存放了异常编号和异常描述。并且提供了两个接口来获得编号和描述。
class MyExcetion
{
public:
MyExcetion(int errid, const char* errmsg)
:_errid(errid)
, _errmsg(errmsg)
{}
int GetErrId() const
{
return _errid;
}
const string& what() const
{
return _errmsg;
}
private:
int _errid;
string _errmsg;
// ...
};
3、异常的使用
(1)先用throw抛出异常,再用tyr和catch捕获,通常抛出多少异常就要进行多少次捕获。除了作用域e就销毁了,所以本质上捕获到的是一个临时变量。这个拷贝的临时对象会在被catch以后销毁。
void f1()
{
int i, j;
cin >
本文详细介绍了C++中的异常处理,从C语言的传统错误处理方式对比,深入讲解了C++异常的概念、使用方法、异常安全与规范、异常体系以及优缺点。强调了异常在构造函数和析构函数中的注意事项,以及自定义异常体系的重要性。
最低0.47元/天 解锁文章
997

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



