相关疑难解决方法(0)

如何捕获.NET应用程序中的所有异常/崩溃

可能重复:
.NET - 实现"捕获所有异常处理程序"的最佳方法是什么

我有一个崩溃的.NET控制台应用程序应用程序并向用户显示一条消息.我的所有代码都在一个try{<code>} catch(Exception e){<stuff>}块中,但偶尔会显示错误.

在Win32应用程序中,您可以通过安装各种异常处理程序捕获所有可能的异常/崩溃:

/* C++ exc handlers */
_set_se_translator
SetUnhandledExceptionFilter
_set_purecall_handler
set_terminate
set_unexpected
_set_invalid_parameter_handler
Run Code Online (Sandbox Code Playgroud)

什么是.NET世界中的等价物,所以我可以处理/记录/安静所有可能的错误情况?

.net c# exception-handling

39
推荐指数
5
解决办法
5万
查看次数

如何在C语言中捕获整数除零异常?

众所周知如何通过使用来捕获浮点除零异常

signal(SIGFPE, handler)
Run Code Online (Sandbox Code Playgroud)

但即使我设置控制字,它也不会捕获整数除零问题

_control87(0, _MCW_EM ); (MS VC 2010)
Run Code Online (Sandbox Code Playgroud)

SubQuestion_1:如何在不使用SEH EXCEPTION_INT_DIVIDE_BY_ZERO的情况下在Windows中的C程序中捕获整数除零?(在Unix/Linux中,这可以通过使用标准信号/ SIGFPE技术来完成)

编辑:信号是ANSI C信号处理方法.
_control87是设置浮点控制字的标准Windows函数.

类似的问题:如何统一处理所有错误,包括内部C库错误

注(来自ISO/IEC 9899:TC2 Annex H.2.2):

"有符号的C整数类型int,long int,long long int和相应的无符号类型与LIA?1兼容.... C的无符号整数类型在LIA?1意义上是'modulo''溢出或out-of-bounds结果静默包装.定义有符号整数类型也是模数的实现不需要检测整数溢出,在这种情况下,只需要检测整数除零. "

?最终解决方案:

对于Windows:它会引发SEH异常.所以它可以通过使用__try __except来捕获.作为可能的解决方案,可以使用SEH转换来处理SEH异常并将它们转换为所需功能的调用.它不是一种"自然"的方式,但它似乎是唯一的方式.

对于Unix:它可以用signal/SIGFPE解决方案捕获.或者查看wiki以获取FPE_INTDIV解决方案(http://rosettacode.org/wiki/Detect_division_by_zero#C).

由于GMan对"未定义的行为"是正确的,我选择他的答案是正确的.

注意:检查VC\crt\src\winxfltr.c:_XcptActTab数组很有意思:)

c math

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×1

c ×1

c# ×1

exception-handling ×1

math ×1