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。
我老老实实地搜索并尝试在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。