问题标签 [unhandled-exception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何消除由 3rd 方应用程序产生的未处理异常对话框
我正在使用无法重新编译的第 3 方可执行文件(供应商不再可用)。它最初是在 .Net 1.1 下编写的,但在以后的版本中似乎也可以正常工作。我使用 Process.Start 从我自己的应用程序启动它(我也尝试过 p/invoke CreateProcess 并获得相同的结果,所以这不相关)
不幸的是,这个第 3 方应用程序现在在退出时会引发未处理的异常。Microsoft 对话框的标题类似于“从 v2.0 引发的异常 ...版本,没有帮助)。
退出时未处理的异常对话框不会引起任何实际问题,但对我的用户来说很麻烦,他们每次都必须单击“确定”才能将其关闭。有什么方法(可能是配置文件选项)禁用此对话框显示我没有源代码的应用程序?我考虑将它加载到一个新的 AppDomain 中,这将使我能够访问 UnhandledException 事件,但没有迹象表明我可以更改对话框的外观。也许有人知道导致异常的原因,我可以通过其他方式解决这个问题?
c# - 在 Windows Mobile 应用程序中使用 UnhandledException 时出现问题
我有一个通过第三方 DLL 访问连接设备的 Windows Mobile 程序。对设备的每次调用都可能花费未知的时间长度,因此每次调用都包含一个超时属性。如果调用返回的时间超过指定的超时时间,则 DLL 会引发异常,我的应用程序可以毫无问题地捕获该异常。
我遇到的问题是关闭应用程序。如果我的应用程序调用了 DLL 并等待超时发生,然后我在超时发生之前关闭了应用程序,我的应用程序将锁定并要求重新启动 PDA。
在正常情况下,我可以确保应用程序在关闭之前等待超时。但是,我试图用来AppDomain.CurrentDomain.UnhandledException
捕获程序中任何未处理的异常,并使用该事件来等待这个挂起的超时发生,以便最终关闭程序。
我的问题是这个事件似乎没有持续足够长的时间。如果我MessageBox.Show("unhandled exception");
在事件中添加一行,然后从我的应用程序的主窗体中抛出一个新的未处理异常,我会在一瞬间看到消息框,但随后它会在我没有单击“确定”按钮的情况下消失。
我在此事件上找到的文档表明,当它被调用时,应用程序已完全致力于关闭并且无法停止关闭,但我认为这并不意味着事件方法本身不会完成。什么给了(我想这就是问题)?
更新: 在完整的窗口(Vista)中,这可以按预期工作,但前提是我使用了Application.ThreadException
.Net CF 2.0中不存在的事件。
.net - 在 .Net 2.0 中捕获未处理的异常。调用了错误的事件
我正在研究如何在 .Net 中管理未处理的异常,我得到了意想不到的结果,我想与您分享一下您的想法。
第一个很容易看到。我编写了这段代码来进行测试,只是一个在创建表单的线程上引发异常的按钮:
当我在 Visual Studio 中执行代码时,会按预期调用 UnhandledException,但是当我从 Windows 执行应用程序时,会调用 UndhanledThreadException。¿?¿?¿¿?¿?
有人知道这里会发生什么吗?
提前致谢。
编辑:阅读Application.ThreadException 文档后,当“Windows 窗体线程”内发生异常时,会引发 Application.ThreadException(无论它们是什么,恕我直言,每个应用程序中只有一个 Windows 窗体线程)。因此 Application.ThreadException 与创建应用程序表单的线程抛出的异常有关,其他异常由 AppDomain.CurrentDomain.UnhandledException 处理。
.net - 在 WCF 中捕获未处理的异常
在 WCF 中,是否有捕获未处理异常的事件或方法,或者我是否需要在任何方法中放置 try/catch?
c++ - 为什么这个 C++ 代码不起作用?
错误是
“未知错误”
这是主要功能
因此,据我所知,它应该捕获任何异常。我怎样才能解决这个问题?(根本不应该有例外,因为它已连接到 google.com 并且 winsock 已初始化等)
更新:错误实际上是在 WSAConnect 之后引发的,但连接不应该有问题,并且由于某种原因没有使用我的 catch 语句。
更新2:现在它捕获了错误,但它说“未知错误”,这对我来说没用。为什么连接不上谷歌?
已解决:谢谢!
c# - 如何在 C# .NETMF 4.0 中捕获未处理的异常?
任何人都知道如何在 C# .NETMF 4.0 中为未处理的异常注册事件处理程序?谷歌搜索一无所获。
谢谢!
java - Java 等效于 CLR 的 UnhandledException 事件
在 CLR(C#、VB.NET 等使用的运行时)中,有一种方法可以注册回调,以便在引发未处理的异常时调用。
Java中有类似的东西吗?
我猜想它可能是某个 API,您可以将一个对象传递给该 API,该对象使用单个方法实现某个接口。当抛出异常并且catch
堆栈上没有匹配时,运行时将调用注册对象上的方法,并传递异常对象。
这将允许程序员保存堆栈跟踪。它还允许他们调用System.exit
, 来停止finally
仅针对未处理的异常执行的块。
更新 1。
为了说明这一点,这里有一个 C# 示例:
关键是通过调用Environment.FailFast(null)
我可以阻止finally
块执行。
果然,在 Windows 7 上运行的 NET 3.5 和 4.0 中,我没有在输出中看到“finally is execution”字符串。但是如果我注释掉这个FailFast
调用,那么我会在输出中看到那个字符串。
更新 2。
根据迄今为止的答案,这是我在 Java 中重现此问题的尝试。
当我在 Java 6 (1.6.0_18) 中运行它时,我看到:
- finally 正在执行
- 未捕获的异常
换句话说,JREfinally
在执行未捕获异常处理程序之前执行块。
关于为什么这很重要的一些背景,这里有一个更复杂的例子:
所以有一个严重的错误,我希望我的程序停止并记录堆栈跟踪。但在我能做到这一点之前,堆栈上的某处有一个中间finally
块(在一个真正的程序中它会在一个单独的方法中),它会尝试访问文件系统。出了点问题。然后再往上一点假设我有一个问题,IOException
因为它们对我来说没什么大不了的。
不用说,输出是:
- finally 正在执行
- 捕获 IOException
- 程序继续运行,就好像什么都没发生过一样……
所以现在我无意中创造了一个严重的错误对我隐藏的情况。
有两种解决方案:
- 以某种方式确保
finally
块永远不会抛出,因为它们无法在本地判断它是否安全。这是一种耻辱,因为它们完全可以在正常执行路径上抛出,即当它们没有运行以响应先前的异常时。 - 告诉运行时我不希望它
finally
在有未捕获的异常时运行块。
如果可以的话,后者当然是我的首选。
c# - System.Runtime.InteropServices.COMException (0x80040154)
当我尝试在目标机器上分解我的应用程序时出现此错误。
我用谷歌搜索,发现一些 dll 需要注册(在我的应用程序中使用)
所以,我将 dll 复制到 System32 并做了 regsvr32
然后我得到了这个错误
Interop.ShockwaveFlashObject.dll 已加载 bt DllRegisterServer 入口点未找到。文件无法注册
一件奇怪的事情是,该应用程序不能只在一台机器上运行。我在 10 台不同的机器上进行了测试,一切都运行良好。它不能只在一台机器上工作。
有人可以帮我吗?
c# - Windows 窗体未处理的错误弹出消息
我有一个 Windows 窗体应用程序(.NET C# 3.5)......这是抛出一个错误......但我有 2 个场景:
客户端:在客户端..错误被记录到 log.txt 文件中..并且出现错误弹出消息
有关调用即时 (JIT) 调试而不是此对话框的详细信息,请参阅此消息的末尾。
************** 异常文本 ************** System.Threading.ThreadAbortException:线程被中止。在 System.Windows.Forms.Internal.IntUnsafeNativeMethods.IntSaveDC(HandleRef hDC)
...
本地:在我的本地计算机中......当应用程序抛出错误时,它会记录到 log.txt 文件中......但我没有看到任何弹出消息......
所以..我想知道,如果我有一些 Windows 选项:不抛出未处理的错误?
注意:我不认为它是应用程序中的东西,因为构建是完全相同的版本。所以它一定是环境中的东西。
c# - .NET 中 UnhandledException 和 DispatcherUnhandledException 的区别
.NET 中的AppDomain.UnhandledException和Application.DispatcherUnhandledException有什么区别?
我需要一个在发生任何未处理的异常时触发的事件。我遇到过这两个,但我不知道它们有什么不同。另外,有没有被解雇的情况?