C++中的try catch机制

try catch mechanism in c++

我老老实实地搜索并尝试在c++中实现try-catch机制,但我失败了:我还没有足够的经验。在 android 中有一个方便的方法来捕获一般异常,无论是被零除还是数组越界,比如

        int res;
        int a=1;
        int b=0;

        try{res = a/b;}
        catch(Exception e)
        {
            int stop=1;
        };

工作正常,程序没有崩溃。

如果可能的话,你能告诉我如何在 C++ 中制作一个通用的异常拦截器吗? 非常感谢您的任何建议!

C++ 针对不同的问题提供了多种错误处理。

被零除和许多其他错误(空指针访问、整数溢出、array-out-of-bounds)不会导致您可以捕获的异常。

您可以使用 clang 的 undefined behavior sanitizer 等工具来检测其中的一些,但这需要您做一些额外的工作,并且会降低性能。

C++ 中处理防止被零除的最佳方法是检查它:

    int res;
    int a=1;
    int b=0;

    if (b == 0)
    {
        int stop=1;
    }
    else
    {
        res = a/b;
    }

另见 the answers to this other very similar question