08.C++异常处理

简介: (创建于2017/12/30)1.按类型抛出异常void main(){ try{ int age = 300; if (age > 200){ throw 9.

(创建于2017/12/30)

1.按类型抛出异常

void main(){
    try{
        int age = 300;
        if (age > 200){
            throw 9.8;
        }
    }
    catch (int a){
        cout << "int异常" << endl;
    }
    catch (char* b){
        cout << b << endl;
    }
    catch (...){
        cout << "未知异常" << endl;
    }
    system("pause");
}

2.throw 抛出函数外

//throw 抛出函数外
void mydiv(int a, int b){
    if (b == 0){
        throw "除数为零";
    }
}

void func(){
    try{
        mydiv(8, 0);
    }
    catch (char* a){
        throw a;
    }
}

void main(){
    try{
        func();
    }
    catch (char* a){
        cout << a << endl;
    }
    system("pause");
}

3.抛出对象异常类

//抛出对象
//异常类

class MyException{
    
};

void mydiv(int a, int b){
    if (b == 0){
        throw MyException();
        //throw new MyException; //不要抛出异常指针     
    }
}

void main(){
    try{
        mydiv(8,0);
    }
    catch (MyException& e2){
        cout << "MyException引用" << endl;
    }
    //会产生对象的副本
    //catch (MyException e){
    //  cout << "MyException" << endl;
    //}
    catch (MyException* e1){
        cout << "MyException指针" << endl;        
        delete e1;
    }
    
    system("pause");
}

4.throw 声明函数会抛出的异常类型

//throw 声明函数会抛出的异常类型

void mydiv(int a, int b) throw (char*, int) {
    if (b == 0){
        throw "除数为零";   
    }
}

5.标准异常(类似于JavaNullPointerException)和自定义异常

//标准异常(类似于JavaNullPointerException)
class NullPointerException : public exception{
public:
    NullPointerException(char* msg) : exception(msg){

    }
};

void mydiv(int a, int b){
    if (b > 10){
        throw out_of_range("超出范围");     
    }   
    else if (b == NULL){
        throw NullPointerException("为空");
    }
    else if (b == 0){
        throw invalid_argument("参数不合法");
    }
}

void main(){
    try{
        mydiv(8,NULL);
    }
    catch (out_of_range e1){
        cout << e1.what() << endl;
    }
    catch (NullPointerException& e2){
        cout << e2.what() << endl;
    }
    catch (...){

    }

    system("pause");
}

6.外部类异常

//外部类异常
class Err{
public:
    class MyException{
        public:MyException(){

        }
    };
};

void mydiv(int a, int b){
    if (b > 10){
        throw Err::MyException();
    }
    
}
相关文章
|
7月前
|
C++
西安石油大学C++上机实验 上机五:模板和异常处理程序设计(2 学时)
西安石油大学C++上机实验 上机五:模板和异常处理程序设计(2 学时)
23 0
|
2月前
|
安全 编译器 程序员
【C++ 泛型编程 进阶篇】 C++ 泛型编程 模板与异常处理、模板与友元之间的使用(一)
【C++ 泛型编程 进阶篇】 C++ 泛型编程 模板与异常处理、模板与友元之间的使用
33 1
|
3天前
|
NoSQL 测试技术 C++
C++的异常处理及错误调试技巧
C++的异常处理及错误调试技巧
6 0
|
13天前
|
存储 C++
C++ 异常处理机制详解:轻松掌握异常处理技巧
C++ 异常处理提供结构化错误管理,增强程序健壮性。通过`throw`抛出异常,`try-catch`捕获并处理。示例展示了当年龄小于18时抛出异常。优点包括提高健壮性和代码可维护性,但可能降低性能并复杂化代码。另外,介绍了四种在C++中相加两个数的方法,包括使用运算符、函数、类、STL函数和lambda表达式。
20 0
|
17天前
|
安全 编译器 C++
C++从入门到精通:3.2异常处理——掌握C++的异常处理机制,提高程序健壮性
C++从入门到精通:3.2异常处理——掌握C++的异常处理机制,提高程序健壮性
|
18天前
|
程序员 编译器 C语言
【C++高阶(七)】C++异常处理的方式
【C++高阶(七)】C++异常处理的方式
|
1月前
|
C++
C++语言异常处理学习应用案例
C++异常处理保证程序在运行时遇到错误(如除数为0)时不崩溃。以下是一个示例:程序接收用户输入的两个整数并进行除法运算。若除数为0,则抛出`std::runtime_error`异常。`try-catch`结构用来捕获并处理异常,当出现异常时,输出错误信息,使程序能继续执行。
17 4
|
1月前
|
C++
C++异常处理try和throw以及catch的使用
C++异常处理try和throw以及catch的使用
|
2月前
|
C++
11. C++异常处理
11. C++异常处理
18 0
11. C++异常处理
|
2月前
|
监控 安全 Linux
Linux C++ 环境下的FTP远程升级实现及异常处理策略
Linux C++ 环境下的FTP远程升级实现及异常处理策略
71 0