C++中的异常处理(上)

Posted 学习只为旅行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中的异常处理(上)相关的知识,希望对你有一定的参考价值。




#include <iostream>
#include <string>

using namespace std;

double divide(double a, double b)
{
    const double delta = 0.000000000000001;
    double ret = 0;
    
    if( !((-delta < b) && (b < delta)) )
    {
        ret = a / b;
    }
    else
    {
        throw 0;
    }
    
    return ret;
}

int main(int argc, char *argv[])
{    
    try
    {
        double r = divide(1, 0);
            
        cout << "r = " << r << endl;
    }
    catch(...)		//...代表
    {
        cout << "Divided by zero..." << endl;
    }
    
    return 0;
}

打印:Divided by zero…


#include <iostream>
#include <string>

using namespace std;

void Demo1()
{
    try
    {   
        throw 'c';
    }
    catch(char c)
    {
        cout << "catch(char c)" << endl;
    }
    catch(short c)
    {
        cout << "catch(short c)" << endl;
    }
    catch(double c)
    {
        cout << "catch(double c)" << endl;
    }
    catch(...)
    {
        cout << "catch(...)" << endl;
    }
}

void Demo2()
{
    throw string("D.T.Software");
}

int main(int argc, char *argv[])
{    
    Demo1();
    
    try
    {
        Demo2();
    }
    catch(char* s)
    {
        cout << "catch(char *s)" << endl;
    }
    catch(const char* cs)
    {
        cout << "catch(const char *cs)" << endl;
    }
    catch(string ss)
    {
        cout << "catch(string ss)" << endl;
    }
    
    return 0;
}

throw “shdjkaha”;这句代码抛出的异常类型为const char* 类型,所以catch可以写const char*的。

小结

以上是关于C++中的异常处理(上)的主要内容,如果未能解决你的问题,请参考以下文章

C++中的异常处理(上)

使用片段中的处理程序时出现非法状态异常

通过 SWIG 处理 Java 中的 C++ 异常

C++中的异常处理

C++异常处理的学习笔记

异常未处理:在 openCV 中的 cvtColor()