问题标签 [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.

0 投票
3 回答
504 浏览

c# - 如何消除由 3rd 方应用程序产生的未处理异常对话框

我正在使用无法重新编译的第 3 方可执行文件(供应商不再可用)。它最初是在 .Net 1.1 下编写的,但在以后的版本中似乎也可以正常工作。我使用 Process.Start 从我自己的应用程序启动它(我也尝试过 p/invoke CreateProcess 并获得相同的结果,所以这不相关)

不幸的是,这个第 3 方应用程序现在在退出时会引发未处理的异常。Microsoft 对话框的标题类似于“从 v2.0 引发的异常 ...版本,没有帮助)。

退出时未处理的异常对话框不会引起任何实际问题,但对我的用户来说很麻烦,他们每次都必须单击“确定”才能将其关闭。有什么方法(可能是配置文件选项)禁用此对话框显示我没有源代码的应用程序?我考虑将它加载到一个新的 AppDomain 中,这将使我能够访问 UnhandledException 事件,但没有迹象表明我可以更改对话框的外观。也许有人知道导致异常的原因,我可以通过其他方式解决这个问题?

0 投票
1 回答
1464 浏览

c# - 在 Windows Mobile 应用程序中使用 UnhandledException 时出现问题

我有一个通过第三方 DLL 访问连接设备的 Windows Mobile 程序。对设备的每次调用都可能花费未知的时间长度,因此每次调用都包含一个超时属性。如果调用返回的时间超过指定的超时时间,则 DLL 会引发异常,我的应用程序可以毫无问题地捕获该异常。

我遇到的问题是关闭应用程序。如果我的应用程序调用了 DLL 并等待超时发生,然后我在超时发生之前关闭了应用程序,我的应用程序将锁定并要求重新启动 PDA。

在正常情况下,我可以确保应用程序在关闭之前等待超时。但是,我试图用来AppDomain.CurrentDomain.UnhandledException捕获程序中任何未处理的异常,并使用该事件来等待这个挂起的超时发生,以便最终关闭程序。

我的问题是这个事件似乎没有持续足够长的时间。如果我MessageBox.Show("unhandled exception");在事件中添加一行,然后从我的应用程序的主窗体中抛出一个新的未处理异常,我会在一瞬间看到消息框,但随后它会在我没有单击“确定”按钮的情况下消失。

我在此事件上找到的文档表明,当它被调用时,应用程序已完全致力于关闭并且无法停止关闭,但我认为这并不意味着事件方法本身不会完成。什么给了(我想这就是问题)?

更新: 在完整的窗口(Vista)中,这可以按预期工作,但前提是我使用了Application.ThreadException.Net CF 2.0中不存在的事件。

0 投票
1 回答
463 浏览

.net - 在 .Net 2.0 中捕获未处理的异常。调用了错误的事件

我正在研究如何在 .Net 中管理未处理的异常,我得到了意想不到的结果,我想与您分享一下您的想法。

第一个很容易看到。我编写了这段代码来进行测试,只是一个在创建表单的线程上引发异常的按钮:

当我在 Visual Studio 中执行代码时,会按预期调用 UnhandledException,但是当我从 Windows 执行应用程序时,会调用 UndhanledThreadException。¿?¿?¿¿?¿?

有人知道这里会发生什么吗?

提前致谢。

编辑:阅读Application.ThreadException 文档后,当“Windows 窗体线程”内发生异常时,会引发 Application.ThreadException(无论它们是什么,恕我直言,每个应用程序中只有一个 Windows 窗体线程)。因此 Application.ThreadException 与创建应用程序表单的线程抛出的异常有关,其他异常由 AppDomain.CurrentDomain.UnhandledException 处理。

0 投票
2 回答
3998 浏览

.net - 在 WCF 中捕获未处理的异常

在 WCF 中,是否有捕获未处理异常的事件或方法,或者我是否需要在任何方法中放置 try/catch?

0 投票
3 回答
1800 浏览

c++ - 为什么这个 C++ 代码不起作用?

错误是

“未知错误”

这是主要功能

因此,据我所知,它应该捕获任何异常。我怎样才能解决这个问题?(根本不应该有例外,因为它已连接到 google.com 并且 winsock 已初始化等)

更新:错误实际上是在 WSAConnect 之后引发的,但连接不应该有问题,并且由于某种原因没有使用我的 catch 语句。

更新2:现在它捕获了错误,但它说“未知错误”,这对我来说没用。为什么连接不上谷歌?

已解决:谢谢!

0 投票
1 回答
940 浏览

c# - 如何在 C# .NETMF 4.0 中捕获未处理的异常?

任何人都知道如何在 C# .NETMF 4.0 中为未处理的异常注册事件处理程序?谷歌搜索一无所获。

谢谢!

0 投票
1 回答
534 浏览

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在有未捕获的异常时运行块。

如果可以的话,后者当然是我的首选。

0 投票
3 回答
6638 浏览

c# - System.Runtime.InteropServices.COMException (0x80040154)

当我尝试在目标机器上分解我的应用程序时出现此错误。

我用谷歌搜索,发现一些 dll 需要注册(在我的应用程序中使用)

所以,我将 dll 复制到 System32 并做了 regsvr32

然后我得到了这个错误

Interop.ShockwaveFlashObject.dll 已加载 bt DllRegisterServer 入口点未找到。文件无法注册

一件奇怪的事情是,该应用程序不能只在一台机器上运行。我在 10 台不同的机器上进行了测试,一切都运行良好。它不能只在一台机器上工作。

有人可以帮我吗?

0 投票
1 回答
1482 浏览

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 选项:不抛出未处理的错误?

注意:我不认为它是应用程序中的东西,因为构建是完全相同的版本。所以它一定是环境中的东西。

0 投票
3 回答
6808 浏览

c# - .NET 中 UnhandledException 和 DispatcherUnhandledException 的区别

.NET 中的AppDomain.UnhandledExceptionApplication.DispatcherUnhandledException有什么区别?

我需要一个在发生任何未处理的异常时触发的事件。我遇到过这两个,但我不知道它们有什么不同。另外,有没有被解雇的情况?