问题标签 [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 回答
7208 浏览

wcf - WCF - 错误/异常与消息

我们目前正在争论是否最好通过 WCF 通道抛出错误,而不是传递指示状态的消息或来自服务的响应。

错误来自 WCF 的内置支持,您可以在其中使用内置的错误处理程序并做出相应的反应。然而,这会带来开销,因为在 .NET 中引发异常可能会非常昂贵。

消息可以包含必要的信息来确定您的服务调用发生了什么,而无需引发异常的开销。然而,它确实需要几行重复的代码来分析消息并确定其内容之后的操作。

我们尝试创建一个可以在我们的服务中使用的通用消息对象,这就是我们想出的:

如果我的所有服务调用都返回此项目,我可以持续检查“成功”属性以确定一切是否顺利。然后,如果需要,我会在指示出现问题的事件中收到错误消息字符串,以及包含 Dto 的通用项目。

异常信息必须记录到中央日志服务,而不是从服务传回。

想法?评论?想法?建议?

进一步澄清我的问题

我遇到的错误合同问题是传达业务规则。

例如,如果有人登录,并且他们的帐户被锁定,我该如何沟通?他们的登录显然失败了,但由于“帐户锁定”的原因而失败。

我也是:

A) 使用布尔值,在消息帐户被锁定的情况下抛出错误

B)返回带有相关信息的AuthenticatedDTO

0 投票
5 回答
3243 浏览

c++ - 将浮点异常转换为 C++ 异常

是否可以在 x86 Linux 上将浮点异常(信号)转换为 C++ 异常?

这是出于调试目的,因此不可移植性和缺陷是可以的(例如,如果不能 100% 保证调用所有析构函数)。

0 投票
3 回答
6617 浏览

c++ - gcc 如何在 linux 上实现 C++ 异常的堆栈展开?

gcc 如何在 linux 上实现 C++ 异常的堆栈展开?特别是,它如何知道展开框架时调用哪些析构函数(即,存储了什么样的信息以及存储在哪里)?

0 投票
4 回答
788 浏览

java - 应该如何在架构级别计划异常?

是否有任何好的资源可以从架构的角度规划如何使用异常?(或者直接在这里提供你的建议。)在我工作过的项目中,我发现一些常见的异常被一遍又一遍地使用,并且往往失去了它们的意义。来自:http: //jamesjava.blogspot.com/2007/10/exception-plan.html

0 投票
33 回答
1049843 浏览

exception - 处理“java.lang.OutOfMemoryError: PermGen space”错误

最近我在我的 Web 应用程序中遇到了这个错误:

java.lang.OutOfMemoryError: PermGen 空间

它是运行在 Tomcat 6 和 JDK 1.6 上的典型 Hibernate/JPA + IceFaces/JSF 应用程序。显然,这可能会在重新部署应用程序几次后发生。

是什么原因造成的,可以做些什么来避免它?我该如何解决这个问题?

0 投票
3 回答
32683 浏览

python - 如何使用 assertRaises() 对 python 类的 __init__() 方法进行单元测试?

我有一堂课:

一个单元测试应该确保传递给构造函数的不正确的参数正确地引发了一个错误:

但我得到...

为什么?我应该在哪里定义这个错误对象?我认为它是作为默认异常类型内置的,不是吗?

0 投票
3 回答
35696 浏览

c# - 在 ASP.NET C# 中引发异常

throw;只是说和throw ex;假设ex是你正在捕捉的例外有区别吗?

0 投票
18 回答
18792 浏览

c# - 业务对象、验证和异常

我一直在阅读一些关于异常及其使用的问题和答案。似乎是一种强烈的观点,即只应针对异常、未处理的情况提出异常。所以这让我想知道验证如何与业务对象一起工作。

假设我有一个带有 getter/setter 对象属性的业务对象。假设我需要验证该值是否在 10 到 20 之间。这是一个业务规则,因此它属于我的业务对象。所以这对我来说似乎意味着验证代码在我的设置器中。现在我将 UI 数据绑定到数据对象的属性。用户输入5,所以规则需要失败,不允许用户移出文本框。. UI 是数据绑定到属性的,因此将调用 setter、检查规则并失败。如果我从我的业务对象中提出一个异常说规则失败,那么 UI 会接受它。但这似乎与异常的首选用法背道而驰。鉴于它是一个二传手,你真的不会有二传手的“结果”。

那么验证应该如何工作呢?

编辑:我可能在这里使用了一个过于简单的例子。像上面的范围检查这样的事情可以由 UI 轻松处理,但如果验证更复杂,例如业务对象根据输入计算一个数字,如果计算出的数字超出范围,它应该被拒绝。这是更复杂的逻辑,不应该出现在 UI 中。

还考虑基于已输入的字段输入的进一步数据。例如,我必须在订单上输入一个项目以获得某些信息,如现有库存、当前成本等。用户可能需要此信息来决定进一步输入(例如要订购多少个单位),或者可能需要它来订购以进行进一步验证。如果项目无效,用户是否应该能够输入其他字段?重点是什么?

0 投票
14 回答
27841 浏览

c++ - 我应该在 C++ 中使用异常说明符吗?

在 C++ 中,您可以通过使用异常说明符来指定函数可能会或可能不会抛出异常。例如:

由于以下原因,我对实际使用它们表示怀疑:

  1. 编译器并没有真正以任何严格的方式强制执行异常说明符,因此好处并不大。理想情况下,您希望得到一个编译错误。
  2. 如果一个函数违反了异常说明符,我认为标准行为是终止程序。
  3. 在 VS.Net 中,它将 throw(X) 视为 throw(...),因此对标准的遵守并不强。

你认为应该使用异常说明符吗?
请回答“是”或“否”,并提供一些理由来证明您的回答是正确的。

0 投票
3 回答
2585 浏览

c# - 异常通过 Application.ThreadException 和 AppDomain.CurrentDomain.UnhandledException

我遇到了一个应用程序挂起的问题,并给了我默认的“请告诉 Microsoft 这个问题”弹出窗口,而不是应用程序中的“未处理的异常”对话框。

在应用程序代码中,Application.ThreadException 和 AppDomain.CurrentDomain.UnhandledException 都被重定向到将错误日志写入磁盘、将屏幕截图保存到磁盘并显示友好对话框的方法。

但是当这个错误发生时,这三件事都不会发生。我在事件查看器中得到的只是这个:

EventType clr20e3、P1 myapp.exe、P2 4.0.0.0、P3 47d794d4、P4 mscorlib、P5 2.0.0.0、P6 471ebc5b、P7 15e5、P8 27、P9 system.argumentoutofrange、P10 NIL

鉴于该错误似乎仅在应用程序运行几个小时后才发生,我想知道它是否可能是内存泄漏问题。我搜索了一些“clr20e3”,但只找到了 ASP.Net 的东西。我的应用程序是 Windows Forms (.Net 2.0) exe,使用了相当多的程序集——在 C# 和一些非托管 C++ 中。

我想这也可能是错误处理方法中的错误 - 正如一些答案所暗示的那样,我可能会尝试在错误处理程序的开头进行记录(但考虑到这几乎就是我所做的......)。

任何解决此问题的帮助将不胜感激 - 无论是解决方案,还是有关如何找出问题根本原因的建议。

更新:原始错误的根本原因是访问具有负索引的数组(即 system.argumentoutofrange)。为什么这没有被困住对我来说有点神秘,但是考虑到两个异常都被发送到相同的处理代码,我想知道是否可能没有条件(例如)两者都被调用并争夺资源(例如日志文件)?

我设法通过在错误处理代码中的任何其他内容之前执行 EventLog.WriteEntry 来证明这一点。现在添加了一个标志以防止在错误处理中重新进入,我似乎不再有问题......