为什么这个基本的 Try-Catch 无法捕获

弗拉特利

我正在学习 C++ 中的 try-catch 构造,并且我有以下示例似乎无法执行任一捕获中的代码。在过去的几个小时里,我一直试图在没有运气的情况下找到错误/问题。

我想知道我的机器上的 g++ 是否有问题——我使用的是 mingw 的 g++ 和 Windows 10。

#include <iostream>
#include <stdexcept>

int main(){

    try {
        std::cout << "Start of Try-Catch\n";
        int a = 13;
        int b = 0;
        int p = a/b;
        std::cout << "printing p: " << p << std::endl;
        p = 43;

        std::cout << "Passed the div by zero issue\n";
    } catch (std::runtime_error& e){
        std::cout << "runtime error: " << e.what() << '\n';
        return 2;
    } catch (std::exception& e){
        std::cout << "other error: " << e.what() << '\n'; 
        return 3;
    } catch (...) {
        std::cout << "final catch\n";
        return 4;
    }
    std::cout << "end of program\n";
    return 0;
}

相反,这是我编译和运行时发生的情况:

C:\Users\...\Part 1>g++ cp_bug.cpp -std=c++17

C:\Users\...\Part 1>a.exe
Start of Try-Catch

C:\Users\...\Part 1>
CppProgrammer23

做这样的事情会更合乎逻辑:

int main(){

    try {
        std::cout << "Start of Try-Catch\n";
        int a = 13;
        int b = 0;
        if(b==0)
            throw std::string("Passed the div by zero issue\n");
        int p = a/b;
        
        std::cout << "printing p: " << p << std::endl;
    } catch (std::string e) {
        std::cout << e;
        return -1;
    }
    std::cout << "end of program\n";
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么try catch块没有捕获promise异常?

来自分类Dev

为什么`catch`不能捕获这个异常?

来自分类Dev

为什么我的javascript try / catch块无法启动?

来自分类Dev

为什么这个try catch示例不起作用

来自分类Dev

无法在 try-catch C# 中捕获异常

来自分类Dev

无法在try catch块中捕获Webservice调用方法

来自分类Java

try / catch块捕获异常有什么意义?

来自分类Dev

异常通过try ... catch捕获

来自分类Dev

为什么由于Node.js中的可执行路径无效,try-catch块无法捕获child_process生成异常?

来自分类Dev

为什么C ++ try / catch不能捕获“纯虚拟调用”异常?

来自分类Dev

为什么不能通过try / catch SqlException捕获SqlException类型的异常?

来自分类Dev

在函数中捕获异常,在 try-catch 中调用。不起作用,为什么?

来自分类Dev

为什么需要openFileOutput的try catch块?

来自分类Dev

在try / catch块中无法捕获Chrome的“无法加载本地资源”错误

来自分类Dev

@ try / @ catch没有捕获异常

来自分类Dev

在 try/catch 块中未捕获异常

来自分类Dev

使用try / catch不会捕获异常

来自分类Dev

PHP try catch块不捕获

来自分类Dev

使用try..catch捕获错误(通知)

来自分类Dev

@ try @ catch块未捕获异常内部

来自分类Dev

异常未捕获在try catch块中

来自分类Dev

SQL Server TRY ... CATCH未捕获错误

来自分类Dev

Try-Catch不会捕获异常

来自分类Dev

try / catch块未捕获libpng错误

来自分类Dev

可以嵌套 Try Catch 触发父捕获

来自分类Java

为什么try-catch无法解决未经检查的泛型转换中的警告?

来自分类Dev

为什么@try ... @ catch无法与-[NSFileHandle writeData]一起使用?

来自分类Dev

为什么try..catch无法与chrome.windows.get一起使用?

来自分类Dev

为什么 try catch 中的“catch”声明 $e 的类型

Related 相关文章

  1. 1

    为什么try catch块没有捕获promise异常?

  2. 2

    为什么`catch`不能捕获这个异常?

  3. 3

    为什么我的javascript try / catch块无法启动?

  4. 4

    为什么这个try catch示例不起作用

  5. 5

    无法在 try-catch C# 中捕获异常

  6. 6

    无法在try catch块中捕获Webservice调用方法

  7. 7

    try / catch块捕获异常有什么意义?

  8. 8

    异常通过try ... catch捕获

  9. 9

    为什么由于Node.js中的可执行路径无效,try-catch块无法捕获child_process生成异常?

  10. 10

    为什么C ++ try / catch不能捕获“纯虚拟调用”异常?

  11. 11

    为什么不能通过try / catch SqlException捕获SqlException类型的异常?

  12. 12

    在函数中捕获异常,在 try-catch 中调用。不起作用,为什么?

  13. 13

    为什么需要openFileOutput的try catch块?

  14. 14

    在try / catch块中无法捕获Chrome的“无法加载本地资源”错误

  15. 15

    @ try / @ catch没有捕获异常

  16. 16

    在 try/catch 块中未捕获异常

  17. 17

    使用try / catch不会捕获异常

  18. 18

    PHP try catch块不捕获

  19. 19

    使用try..catch捕获错误(通知)

  20. 20

    @ try @ catch块未捕获异常内部

  21. 21

    异常未捕获在try catch块中

  22. 22

    SQL Server TRY ... CATCH未捕获错误

  23. 23

    Try-Catch不会捕获异常

  24. 24

    try / catch块未捕获libpng错误

  25. 25

    可以嵌套 Try Catch 触发父捕获

  26. 26

    为什么try-catch无法解决未经检查的泛型转换中的警告?

  27. 27

    为什么@try ... @ catch无法与-[NSFileHandle writeData]一起使用?

  28. 28

    为什么try..catch无法与chrome.windows.get一起使用?

  29. 29

    为什么 try catch 中的“catch”声明 $e 的类型

热门标签

归档