问题标签 [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 投票
8 回答
82073 浏览

.net - 使自定义 .NET 异常可序列化的正确方法是什么?

更具体地说,当异常包含自定义对象时,这些对象本身可能是可序列化的,也可能不是。

举个例子:

如果此 Exception 被序列化和反序列化,则不会保留两个自定义属性 (ResourceName和)。ValidationErrors属性将返回null

是否有用于实现自定义异常序列化的通用代码模式?

0 投票
9 回答
15798 浏览

wcf - 在 Silverlight 中捕获 WCF 异常的最佳方法是什么?

我有一个使用 WCF 服务的 Silverlight 2 应用程序。因此,它对服务方法的所有调用使用异步回调。如果在这些调用之一之前或期间服务未运行、崩溃或网络中断等,则会按预期生成异常。问题是,我不知道如何捕捉这个异常。

  • 因为它是一个异步调用,所以我不能用 try/catch 块包装我的开始调用,并让它拾取在程序从该点继续运行之后发生的异常。

  • 因为服务代理是自动生成的,所以我不能在每个生成的调用 EndInvoke 的函数上放置一个 try/catch 块(异常实际出现的地方)。这些生成的函数也被调用堆栈中的外部代码包围,因此堆栈中也没有其他地方可以放置 try/catch。

  • 我不能将 try/catch 放在我的回调函数中,因为异常发生在它们被调用之前。

  • 我的 App.xaml.cs 中有一个 Application_UnhandledException 函数,它捕获所有未处理的异常。我可以使用它,但这似乎是一种混乱的方式。我宁愿将此函数保留用于真正意外的错误(也称为错误),而不是在我想以特定方式处理的每种情况下都使用此函数中的代码。

我错过了一个明显的解决方案吗?还是我使用 Application_UnhandledException 卡住了?

[编辑]
如下所述,Error 属性正是我想要的。让我陷入循环的是,异常被抛出并且似乎未被捕获,但执行能够继续。它触发 Application_UnhandledException 事件并导致 VS2008 中断执行,但在调试器中继续允许执行继续。这不是一个真正的问题,只是看起来很奇怪。

0 投票
28 回答
88478 浏览

c# - 为什么“catch”或“finally”范围内的“try”中没有声明变量?

在 C# 和 Java(可能还有其他语言)中,在“try”块中声明的变量不在相应的“catch”或“finally”块的范围内。例如,以下代码无法编译:

在这段代码中,catch 块中对 s 的引用会发生编译时错误,因为 s 仅在 try 块的范围内。(在 Java 中,编译错误是“s cannot be resolved”;在 C# 中,是“The name 's' does not exist in the current context”。)

这个问题的一般解决方案似乎是在 try 块之前声明变量,而不是在 try 块中:

然而,至少对我来说,(1)这感觉像是一个笨拙的解决方案,并且(2)它导致变量的范围比程序员预期的更大(方法的整个其余部分,而不是仅在try-catch-finally)。

我的问题是,这种语言设计决策背后的基本原理是什么(在 Java、C# 和/或任何其他适用的语言中)?

0 投票
1 回答
685 浏览

winforms - 如何在 WinForms TraceListener 中获取当前异常

我正在修改现有的 WinForms 应用程序,该应用程序使用自定义 TraceListener 进行设置,该程序记录应用程序中发生的任何未处理的错误。在我看来, TraceListener 获得了异常的消息部分(这是记录的内容),而不是其他异常信息。我希望能够获取异常对象(获取堆栈跟踪和其他信息)。

在我更熟悉的 ASP.NET 中,我会调用 Server.GetLastError 来获取最新的异常,但当然这在 WinForms 中不起作用。

如何获取最新的异常?

0 投票
1 回答
349 浏览

linq - LINQ 格式异常

我目前有一个现有的数据库,我正在使用 LINQtoSQL 生成器工具为我创建类。该工具对该数据库运行良好,并且该工具没有错误。
当我对数据运行 LINQ to SQL 查询时,有一行在表中以某种方式包含一些无效数据,并且当它在该行中运行时抛出 System.FormatException。有谁知道这源于什么?有谁知道如何在不将它们一一添加到 select 子句的情况下缩小影响列的范围?

0 投票
3 回答
5416 浏览

c# - WCF 错误和异常

我是第一次编写 WCF 服务。该服务及其所有客户端(至少目前是这样)都是用 C# 编写的。该服务必须对其传递的数据进行大量输入验证,因此我需要有一些方法将无效数据指示回客户端。我已经阅读了很多关于故障和异常、将异常包装在故障中的文章,以及许多让我更加困惑的相互冲突的文章。处理这种情况的正确方法是什么?

我应该完全避免异常并打包结果返回消息吗?我应该创建一个特殊的故障,还是一个特殊的异常,或者像我为非 WCF 验证函数那样抛出 ArgumentExceptions?

我现在拥有的代码(受MSDN影响)是:

在方法上有 [FaultContract(typeof(ValidationFault))]。那么这是解决这个问题的“正确”方法吗?

0 投票
24 回答
29655 浏览

language-agnostic - 哪个,为什么,你更喜欢异常或返回代码?

我的问题是大多数开发人员更喜欢错误处理、异常或错误返回代码。请具体说明语言(或语系)以及为什么您更喜欢其中一种。

我是出于好奇而问这个的。就我个人而言,我更喜欢错误返回代码,因为它们的爆炸性较小,并且如果用户不想这样做,也不会强制用户代码支付异常性能损失。

更新:感谢所有答案!我必须说,尽管我不喜欢带有异常的代码流的不可预测性。关于返回码(和他们的哥哥句柄)的答案确实给代码增加了很多噪音。

0 投票
2 回答
2539 浏览

wcf - WCF - 在您的服务中抛出 FaultExceptions 的开销

我发布了一个关于使用消息与故障异常在服务之间传达业务规则的问题。

我的印象是通过网络抛出这个异常会带来开销,但考虑到它只是一个被序列化和反序列化的消息,它们实际上是相同的。

但这让我开始考虑抛出一般的异常或更具体地抛出 FaultExceptions。

现在在我的服务范围内,如果我使用

传达一个简单的业务规则,例如“您的帐户尚未激活”,现在这会带来什么开销?它与在 .NET 中引发常规异常的开销相同吗?或者 WCF 服务是否使用故障契约更有效地处理这些问题。

所以在我的用户示例中,这是编写我的服务方法的最佳/首选方式

选项一

选项 b

0 投票
25 回答
312599 浏览

java - 获取 java.lang.VerifyError 的原因

我正在调查以下内容java.lang.VerifyError

它在部署 servlet 的 jboss 服务器启动时发生。它是用 jdk-1.5.0_11 编译的,我尝试用 jdk-1.5.0_15 重新编译它但没有成功。那就是编译运行良好,但是在部署时,会发生 java.lang.VerifyError。

当我更改方法名称并收到以下错误时:

您可以看到显示了更多方法签名。

实际的方法签名是

我已经试过用它来查看它,javap它给出了它应该的方法签名。

当我的其他同事检查代码、编译并部署它时,他们遇到了同样的问题。当构建服务器获取代码并将其部署到开发或测试环境 (HPUX) 时,会发生相同的错误。此外,运行 Ubuntu 的自动测试机在服务器启动期间显示相同的错误。

应用程序的其余部分运行正常,只有一个 servlet 出现故障。任何在哪里寻找的想法都会有所帮助。

0 投票
3 回答
801 浏览

java - Java:防止 MetalFileChooserUI$IndentIcon.getIconWidth 中的 NPE?

在 Windows 系统上。我得到以下 NPE 与FileChooser. 这是一个已知的错误,尚未被 sun 修复。http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342301

有人知道防止此异常的解决方法吗?

谢谢。安德烈

javax.swing.swing.SwingUtilities.layoutCompoundLabelImpl(Unknown Source) at javax.swing.plaf.metal.MetalFileChooserUI$IndentIcon.getIconWidth(Unknown Source) 的线程“AWT-EventQueue-2”java.lang.NullPointerException 中的异常。 SwingUtilities.layoutCompoundLabel(Unknown Source) at javax.swing.plaf.basic.BasicLabelUI.layoutCL(Unknown Source) at javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(Unknown Source) at javax.swing.JComponent.getPreferredSize(Unknown Source) ) at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source) at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source) at javax.swing.plaf.basic.BasicListUI$Handler.valueChanged(Unknown Source ) 在 javax.swing 的 javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)。javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source) at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source) at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source) at javax.swing.DefaultListSelectionModel。 setSelectionInterval(Unknown Source) at javax.swing.JList.setSelectedIndex(Unknown Source) at javax.swing.plaf.basic.BasicComboPopup.setListSelection(Unknown Source) at javax.swing.plaf.basic.BasicComboPopup.access$300(Unknown Source)在 javax.swing.plaf.basic.BasicComboPopup$Handler.itemStateChanged(Unknown Source) 在 javax.swing.JComboBox.fireItemStateChanged(Unknown Source) 在 javax.swing.JComboBox.selectedItemChanged(Unknown Source) 在 javax.swing.JComboBox。内容更改(未知来源)