问题标签 [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++ - 从.so调用抛出异常的函数时如何避免崩溃
这是我所做的,我想优雅地处理这个异常:
code_snippet:我的.cpp
code_snippet:异常.c
从上面的两个片段中,我使用以下命令创建了一个 shared_object libexception.so:
然后我从我的 main.cpp code_snippet 中调用了函数 so_main: main.cpp
}
最终命令:g++ -g -ldl -o main.exe src/main.cpp -L lib/ -lexception
执行 main.exe 崩溃。有人可以帮我检测问题出在哪里以及如何避免发生这种崩溃(我们已经有一些架构,其中一些 .SO 调用 extern c++ 函数,因此无法更改,我们只想在 main.cpp 中处理它)
.net - 是否可以防止子 AppDomain 中的未处理异常导致主进程崩溃?
我正在编写一个小型插件库,它使用应用程序域来隔离使用 .Net 框架 4.0 的插件。因此,每个插件中的代码都超出了我的控制范围。当其中一个插件引发未处理的异常时,我观察到结果好坏参半。它们如下。
当插件的主线程中抛出未处理的异常时,调用插件的执行方法的主可插拔应用程序能够干净地捕获并处理它。那里没有问题。然而,
如果插件在插件的 Execute 方法中为基于 WinForms 的应用程序启动消息循环,并且在 WinForm 应用程序中抛出未处理的异常(即在表单中),则可插入应用程序只能在从 Visual Studio 调试器内部运行时捕获异常. 否则(当在 VS 外部调用时)主可插拔应用程序与插件一起崩溃。
如果未处理的异常是在插件的 Execute 方法产生的单独线程中引发的,那么可插入应用程序就没有机会捕获异常并崩溃。
我在下面的链接中创建了一个简单的 VS 2010 项目来模拟这种行为。 http://www.mediafire.com/file/1af3q7tzl68cx1p/PluginExceptionTest.zip
其中,可插拔应用程序中的主要方法如下所示
这是插件项目的代码。它继承自上述可插拔应用程序项目中的 PluginBase 类。
最后这是插件中表单的代码
由于上述两种情况(1和2),我如何防止主进程退出?
提前致谢。
access-violation - 在使用 fstream 写入二进制文件时一致的“访问冲突读取位置”
我正在尝试修改一段代码来获取一些输入数据的 FFT。一切顺利进行转换。当我尝试将转换写入二进制文件时会出现我的问题,此时我得到:
FFT.exe 中 0x68d0ca24 (msvcr100d.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x00161000。
最奇怪的是,并不是每次我编译和运行程序时都会发生这种情况。大约每三次它运行良好并将数据保存到文件中。
如果这不是在问题中包含代码的正确方法,我深表歉意(这里的第一篇文章)。
异常似乎始终发生在 streambuf 的第 202 行(也许有帮助?)。
真正让我失望的是它似乎是随机发生的,因为这是我第一次遇到这个问题,所以我什至不知道从哪里开始寻找错误。根据有关此异常的其他帖子,我使用指针似乎有问题?
任何有关解决方案或如何处理运行错误的帮助将不胜感激。
谢谢你,格雷格
c# - 为什么在这种情况下最终不执行?
我有以下代码:
但是,当我运行它时,它不会打印Execute Dispose!
消息,这是为什么呢?
更新:
如果我像这样更改代码:
它首先打印消息然后崩溃。
我的想法是如果应用程序一开始崩溃,是否可以随心所欲地处理它?
我知道这很简单,但我真的要学习更多。
c# - NullReferenceException 未处理 - 不确定什么是 null
我正在构建一个 icosphere,并且我已经了解了代码的绘制部分,但我不断收到 NullReferenceException 是未处理的错误。我知道它指向哪个 bt 代码,但我不知道实际出了什么问题或如何修复它。
这是课程代码:
它指向的代码部分是这样的:
有谁看到是什么导致了这个问题?
c++ - 什么可能导致此内存访问错误(C++)?可能是未定义的行为?
我正在使用一个相对较大的课程,到目前为止一切正常(注意:我实际上并没有编写课程,我只是添加了一些功能)。但是,在头文件中再声明一个字符串后,现在一切都崩溃了(我收到内存访问错误)。如果我删除该字符串并重建,一切正常。
我实际上并没有对那个字符串做任何事情......只是声明它的行为会导致一些奇怪的内存错误。
我无法比这更详细地解释,因为尝试解释每个功能将是一种浪费。我应该在这里寻找什么样的东西才能找到问题?什么可能导致这种奇怪的行为?
错误本身是:
Unhandled exception at 0x65fd17fd (msvcp80d.dll) in myFile.exe: 0xC0000005: Access violation writing location 0xcdcdcdcd.
基本上 .h 文件中的所有更改是:
转换成:
StringType 是 basic_string 的扩展
silverlight - 如何从 Silverlight UnhandledException 中恢复
在我的 App() 初始化代码中,我包含了一个通用处理程序
我有 2 个工作正常的屏幕,但是当在两个屏幕之间快速来回导航多次(在 7 到 12 之间变化)时,我遇到了这个断点,但有例外
如果我删除 UnhandledException 并将调试器设置为在未处理时中断,我会得到以下信息:
即使我设置e.handled = true
了,我的应用程序也会崩溃。
重要提示:
该应用程序在 MVVM 框架下工作超过 99.9% 的时间,在数十个屏幕之间导航。只有一位用户报告说能够通过在两个屏幕之间快速导航来使应用程序崩溃,然后仅在大约 10 次来回尝试之后
我的问题是:
有什么方法可以确定是什么原因造成的?
有什么办法可以预防吗?
从这个错误中恢复的最佳方法是什么?
c# - 故障系统 dll 然后服务崩溃
我们的一项书面服务出现了奇怪的失败模式。我们会从系统 dll 中得到一个错误,然后一分钟左右,我们的服务将在有或没有未处理的异常的情况下崩溃。
我们将从 .Net 运行时错误报告中获得以下故障模块消息之一:
超过 30 秒(但不到一分钟)后,我们可能会或可能不会收到如下异常:
有没有人看到这种延迟/配对行为?这两个错误都会报告给事件查看器。这只发生在一些物理上较旧的 XP 生产系统上,从不在开发中。
c# - 用户代码未处理 WebProtocolException
我的 try 块中的代码如下所示:
发生的情况是条件被满足并且条件中的 WebProtolException 被满足并抛出。但是,在调试外部 WebProtocolException 时也会抛出“A 中的 WebProtocolException CustomerID 与 B 中的 customerId 不匹配,用户代码未处理”。
但是,当我查看提琴手时,会显示 400 的状态代码,并且在提琴手的原始选项卡上会显示正确的 badrequest 响应和消息。
我很困惑为什么第二个 WebProtocol 没有被用户代码处理。
非常感谢任何建议!
扎尔
c# - 用于记录目的的 C# 类库中未处理的异常
我是软件开发的新手,也是 stackoverflow 的新手,所以请放轻松。
背景:我正在开发一个 C# 类库,用于处理第三方应用程序通过 tcp/ip(使用异步套接字)发送的 xml 消息。我正在使用 com-interop 将类库公开给 Vb6 应用程序。当 C# 库处理它通过套接字接收的 xml 时,它会引发消费 vb6 应用程序订阅的各种事件(这样,当我们最终在 .Net 中重写整个应用程序时,我们已经完成了这个组件)。
问题:我想捕获所有未处理的异常,仅用于记录目的。在 winforms 应用程序中,您可以将事件连接到 AppDomain.CurrentDomain.UnhandledException 和 Application.ThreadException。有没有办法类似地抓取异常数据来记录类库中的信息?
要点:
我不是试图从这些异常中恢复,而只是记录它们并让异常传播并在需要时使应用程序崩溃。
我正在尽最大努力在本地捕获所有特定异常,只要我知道它们可能会发生。因此,我的目的是只记录真正意外的异常。
- 我知道有些人会说这将是一个糟糕的设计模式。我应该让调用者处理这些异常。问题是 vb6 应用程序没有像我想要的那样强大的错误处理。首先,我想记录堆栈跟踪,以便如果 vb6 应用程序由于我的 dll 而崩溃,我可以查看日志,以便提醒我的 c# 代码中可能需要更改的潜在区域。
谁能给我一些方向?到目前为止,我发现的最佳选择似乎是在每个公共方法中放置一个通用的 try catch 块,记录异常,然后抛出它。这似乎不太理想:
这不仅看起来像一个糟糕的设计,而且我不知道如果其中一个异步回调在与调用该方法的线程不同的线程上导致异常会发生什么。这个通用的 try/catch 块还会捕获这样的异常吗?
感谢您的任何帮助。
编辑:我最初将@Eric J. 的答案标记为正确,但在尝试实现该解决方案后,我发现它不适用于我正在使用的套接字类的异步回调。一旦使用线程池线程触发异步回调,我似乎无法捕获堆栈中稍后发生的任何异常。我需要使用 AOP 框架,还是有其他方法可以捕获这些异常?