我诚实地搜索并尝试在C++中实现try - catch机制,但失败了:我还没有足够的经验。在Android中有一种方便的方法来捕捉一般异常,无论是被零除还是数组越界,比如
int res; int a=1; int b=0; try{res = a/b;} catch(Exception e) { int stop=1; };
工作正常,程序未崩溃。如果可能的话,你能告诉我如何在C++中做一个通用的异常拦截器吗?
t2a7ltrp1#
对于不同的问题,C有不同的错误处理范围。被零除和许多其他错误(空指针访问、整数溢出、数组越界)不会导致您可以捕获的异常。您可以使用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。
1条答案
按热度按时间t2a7ltrp1#
对于不同的问题,C有不同的错误处理范围。
被零除和许多其他错误(空指针访问、整数溢出、数组越界)不会导致您可以捕获的异常。
您可以使用clang的undefined behavior sanitizer之类的工具来检测其中的一些,但这需要您做一些额外的工作,并且会影响性能。
C中防止被零除的最好方法是检查它:
另请参见the answers to this other very similar question。