问题标签 [exception-handling]

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 投票
4 回答
2781 浏览

c# - 由 MS Excel 和 COM 托管的 C# 2 中委托中的异常行为

大家早,

这里有点语言理论问题......我在网上找到了一些参考资料,表明 C# 中的异常处理和委托在某些情况下有一些不同的行为,但我找不到任何关于此事的具体文档。

我们最近在 Microsoft Excel 插件的委托中遇到了一些大问题,导致 MSVC 运行时发生硬崩溃。删除代表解决了这个问题,但我现在很想知道血腥的细节。

作为核心代码的一个简洁示例:

上述结构允许集中形式的错误处理,并且从纯代码的角度来看是简洁明了的。每个公开公开的函数都被声明为委托并通过上述片段执行。

在一个简单的控制台应用程序中,从委托中抛出异常或只是一个普通的意外错误(例如“意外地”在空指针上调用 ToString())按预期工作,并按需要处理错误。

扔进 MS Excel,你会遇到严重的崩溃。单步执行代码将显示错误发生的位置,但在一切都陷入巨大的破坏火球之前,似乎没有发生堆栈展开。

我的假设是,托管 .NET 运行时(以及我们的代码)的 COM 正在做一些不同于正常 .NET 代码执行的事情。这会杀死端点,而 Excel 不知道这一点,而 Excel 又试图通过 COM 访问端点,却发现它不知何故消失了,而 Excel 作为回报也报废了。

这只发生在 Excel+COM+delegates 的组合中,但老实说,我不知道哪个对这种行为影响更大……有什么想法吗?

0 投票
2 回答
5127 浏览

java - 为什么我的 JNI 代码没有成功找到 jthrowable 的 getMessage 方法?

我正在尝试访问 jthrowable 中的消息,同时处理我找不到类时生成的异常。但是,我无法访问 jthrowable 对象上 getMessage() 的消息 ID,我不知道为什么。我尝试将 getMessage 的签名更改为“()Ljava/lang/String”(最后没有分号,但这是必要的,对吧?)没有喜悦。我对此感到困惑。我什至尝试用 toString 替换 getMessage 但没有奏效。显然,我在这里做一些微不足道的错误。

这是我正在使用的代码:

此代码的输出(除其他外)如下所示:

说真的,我怎么到这里?!
线程“主”java.lang.NoClassDefFoundError 中的异常:com/planet/core360/docgen/Processor

javap -p -s java.lang.Throwable给了我这个:

编译自“Throwable.java”
public class java.lang.Throwable extends java.lang.Object implements java.io.Serializable{
...
public java.lang.String getMessage();
签名:()Ljava/lang/String;
...

0 投票
9 回答
34574 浏览

c# - .NET - 实现“捕获所有异常处理程序”的最佳方法是什么

我想知道最好的方法是“如果所有其他方法都失败了”。

我的意思是,你在你的应用程序中处理尽可能多的异常,但仍然会有错误,所以我需要有一些东西来捕获所有未处理的异常,这样我就可以收集信息并将它们存储在数据库中或提交它们到网络服务。

AppDomain.CurrentDomain.UnhandledException 事件是否捕获所有内容?即使应用程序是多线程的?

旁注:Windows Vista 公开了本机 API 函数,允许任何应用程序在崩溃后自行恢复......现在想不出这个名字......但我宁愿不使用它,因为我们的许多用户仍在使用视窗XP。

0 投票
2 回答
771 浏览

delphi - 在 Windows 中未调用 exceptProc

我目前正在尝试创建一个内置到我的 Windows 服务中的异常处理程序,当出现未处理的异常时,它会向另一个程序发送消息。我已经构建了该方法并使通信正常工作,但似乎每次我的程序抛出错误时,(我在代码中有一个 raise 调用来强制它。)windows 会捕获它而不调用 Handler。谁能解释我做错了什么?

简化代码解释:

我调用这段代码来运行它:

我希望输出是:

起始
显示:未处理

但它所做的只是显示:

开始

然后 Windows 在大约 5 秒后返回命令提示符。

为什么没有正确调用处理程序?

PS 我一直在控制台应用程序中运行这些测试以进行测试。

编辑:

这里有一些更多信息:

显然,当您有一个分配的 exceptProc 时,您的程序不应该抛出正常的运行时 217 错误。我猜这就是windows正在捕获的东西,但是据我所见,我的程序正在抛出运行时错误,我也无法让ErrorProc来捕获它。

0 投票
4 回答
41373 浏览

java - 在 JNI 代码中抛出异常的最佳方法?

我想要一种在 JNI 代码中抛出异常的一致且简单的方法;处理链式异常的东西(隐含地来自 env->ExceptionOccurred 方法,或显式地通过参数,无论哪种方式都很好)并且每次我想这样做时都可以节省我查找构造函数的时间。以上所有内容最好用 C 语言编写,尽管我可以根据需要从 C++ 翻译它。

SO上有没有人可以分享这样的东西?

0 投票
5 回答
2919 浏览

c# - C# 中的已检查异常捕获

Java 要求您捕获所有可能的异常或将它们声明为在方法签名中抛出。C# 不是这种情况,但我仍然觉得捕获所有异常是一个好习惯。有谁知道可以处理 C# 项目并指出抛出异常但未捕获的位置的工具?

0 投票
6 回答
840 浏览

c# - 忽略异常

我有一些忽略特定异常的代码。

当然,这会导致编译时警告,因为 ex 未使用。是否有一些标准的接受 noop 应该用来删除这个警告?

0 投票
4 回答
3218 浏览

sql - (Windows) 异常处理:到事件日志还是到数据库?

我曾在一些商店工作过,我在事件日志和数据库表中实现了异常处理。

每个都有其优点,我可以根据我的经验强调一些优点:

事件簿

  • 例外情况的行业标准位置 (+)
  • 易于记录 (+)
  • 可以在此处记录数据库连接问题 (+)
  • 可以在事件日志之上构建报告和查看应用程序 (+)
  • 需要经常冲洗,如果那里报告很多(-)
  • 不如 SQL 日志记录那样可扩展[在 SQL 中添加自定义字段,如方法名称] (-)

SQL/数据库

  • 可以处理大量数据 (+)
  • 可以处理异常的快速批量插入 (+)
  • 负载均衡环境中异常的单一存储位置 (+)
  • 非常可定制 (+)
  • 从 SQL 存储中构建报告/通知更容易一些 (+)
  • 不同于存储典型异常的位置 (-)

我是否遗漏了任何主要考虑因素?

我确信其中一些观点值得商榷,但我很好奇什么对其他团队最有效,以及为什么你对这个选择有强烈的感觉。

0 投票
2 回答
169 浏览

exception-handling - 强制应用程序抛出特定异常

我们正在替换我们应用程序中的异常处理系统以符合 Vista 认证,但问题是如何强制抛出某些异常,以便我们可以检查响应。

不幸的是,整个应用程序的编写没有考虑适当的分层、抽象或隔离原则,并且在时间范围内引入模拟和单元测试是不可能的:(

我的想法是通过编译器指令或通过尊重配置文件中的值来引入将引发特定异常的代码。然后我们可以正常运行应用程序并手动检查异常是如何处理的。

只是想我会把它放在那里,看看 SO 社区是否能想到更好的东西!

干杯

0 投票
6 回答
56357 浏览

asp.net - Sys.WebForms.PageRequestManagerServerErrorException 12031

我偶尔会从 AJAX.NET 应用程序中收到以下弹出窗口

Microsoft kb中,该状态代码指示 ERROR_INTERNET_CONNECTION_RESET,但它没有说明首先触发错误的根本问题是什么。

如何记录/跟踪/等生成弹出窗口的基础错误?