问题标签 [custom-exceptions]

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 投票
2 回答
87964 浏览

python - 带有错误代码和错误消息的自定义 Python 异常

...

validate() 和 __validateMulti() 是验证和存储传递的输入参数的类的方法。从代码中可以看出,当某些输入参数丢失或某些验证失败时,我会引发一些自定义异常。

我想定义一些特定于我的应用程序的自定义错误代码和错误消息,例如,

错误 1100:“未找到关键参数。请验证您的输入。”

错误 1101:“未找到日期参数。请验证您的输入”

...

错误 2100:“多天参数无效。接受的值为 2、5 和 7。”

并向用户报告。

  1. 如何在自定义异常中定义这些错误代码和错误消息?
  2. 如何以我知道要显示什么错误代码/消息的方式引发/捕获异常?

(PS:这是针对 Python 2.4.3 的)。


Bastien Léonard 在此SO 评论中提到您不需要总是定义一个新的__init__or __str__; 默认情况下,参数将放置在 self.args 中,它们将由__str__.

因此,我更喜欢的解决方案:

用法:

0 投票
2 回答
2194 浏览

python - 在单元测试中,如何确定传递给自定义异常的参数?

...

上面的单元测试,我知道MissingInput测试类中的测试如下:

将正确检测是否引发了 MissingInputError 异常。

有什么方法可以在测试中确定在调用异常时将哪个错误号传递给异常,以便我可以确定该错误是针对特定的缺失输入引发的,而不是针对任何其他缺失的输入?

(PS:Python 2.4.3)。


提示:如果您坚持使用 2.4 到 2.6,请使用unittest2 库。在 Python 2.7 和 3.2 中,单元测试的一大堆改进将会到来。unittest2 是用于 Python 2.4、2.5 和 2.6 的新功能(和测试)的反向移植。

0 投票
5 回答
1685 浏览

c# - 实现通用自定义异常的优缺点

实现自定义异常的优缺点如下:
创建一个在其描述中表示错误消息的枚举:

创建一个自定义异常类:

GetDescription方法是一种枚举扩展方法,它使用反射获取枚举描述。这样,我可以抛出异常,如:

并在 catch 块中向用户显示,例如:

我见过 MVP 推荐的这种方法。与以下内容相比,这种方法有什么好处:

  • 使用通用异常: throw new Exception("Error Message");。
  • 使用自定义异常:为任何情况定义自定义异常。例如(WebServiceException类、AuthenticationException类等)

这是MVP 推荐的链接。

谢谢你。

0 投票
5 回答
1013 浏览

c# - (错误)使用 Exception.HelpLink 来识别 Exception 对象可以吗?

我正在开发一个日志程序,我想避免在Exception重复记录同一对象时重复处理它,因为它正在通过嵌套调用结构向上渗透。因此,我希望能够对Exception对象进行一次格式化,并为格式化的版本提供一个唯一的“异常号”,然后Exception以某种方式标记该对象,以便如果它在以后的日志调用中再次出现,我可以识别它。

我想出的想法是滥用对象的HelpLink领域Exception。我将它设置为包含我的“异常号”的字符串版本。Exception然后,如果它在另一个日志调用中再次出现,我可以识别该对象。

但这可能是个坏主意吗?有没有我没有想到的问题?如果是这样,有人有更好的主意吗?

编辑:为了进一步解释这种情况,这个记录器只会用于我自己的程序。

0 投票
1 回答
1726 浏览

python - 如何在打开文件时捕获 pywin32com 异常

我正在尝试使用 COM 在 python 中打开一个 excel 文件,并尝试捕获未找到文件的错误:

我首先尝试捕获 IOError:

但是当 COM 遇到文件未找到问题时,它不会引发 IO 错误,而是会引发名为 com_error 的东西:

com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Office Excel', u"'asdf.xlsx' 找不到。检查文件名的拼写,并验证文件位置是否正确.\n\n如果您尝试从最近使用的文件列表中打开该文件,请确保该文件未被重命名、移动或删除。", u'C:\Program Files (x86)\Microsoft Office\Office12\1033\XLMAIN11.CHM', 0, -2146827284), 无)

所以逻辑上我尝试了这个:

但...

0 投票
1 回答
879 浏览

debugging - Iron Python 和 VS2010 调试问题

我开始使用 IronPython 和 VS2010,但我在调试环境方面遇到了问题……有人能指出我正确的方向吗?请注意,我的 python 知识不到一周,所以我的问题很可能是自己造成的。

最烦人的问题是,当发生异常时,VS 调试器不会中断发生异常的位置……而是似乎在最高级别中断。这使得找出异常发生的位置成为一个令人沮丧的断点和步进练习。

另一个烦恼是引发自定义异常。调试器只告诉我异常的类名而不是消息(但本机 Iron python 异常包括两者)。例如:

当引发时(例如“raise MyCustomError('some nice message')”),我在 $exception 的调试器中看到的只是“MyCustomError”......价值。

任何帮助,将不胜感激!!

0 投票
3 回答
1997 浏览

c++ - 无法捕获的自定义异常 C++

这让我整晚都发疯了。

我从库中抛出这个自定义异常,如下所示

并通过主要途径抓住它

Id::set_pattern_validator是库的 Id 类中的一个静态方法,也是异常的来源。我已经尽我所能来捕捉异常,但它没有被捕捉到。

终端输出如下。

“在抛出 'Exception' what() 的实例后调用终止:模式验证器一旦设置就无法更改。中止陷阱。”

现在没有牺牲一只山羊,我不知道接下来要尝试什么……任何提示/提示???

注意:如果我在 main 中抛出自定义异常,我可以毫无问题地捕获它。

使用 GCC 并支持 C++0x 的 Mac OS X 环境。

编辑:目前的解决方案是继续在基于 linux 的系统(Fedora)上进行开发。到目前为止,我不会接受答案。感谢大家的帮助。

0 投票
3 回答
10196 浏览

ruby-on-rails-3 - 获取现有 Rails 错误类的列表以进行重用/继承

通常我需要抛出一个自定义(化)错误。就像由于参数不匹配而无法找到资源时一样。

我更喜欢抛出现有错误,或者抛出从现有错误继承的错误。这样,我就不会介绍已经定义并且可以完美使用的错误类(DRY)。但它也允许保持措辞和风格相同,通过继承和简单地改变一两个词来澄清与原始错误的区别。

例如:

我很确定已经定义了此类错误。事实上,在阅读了很多行代码之后,我发现我的 MongoID 驱动程序有Mongoid::Errors::InvalidOptions: Calling Document#find with nil is invalid.

Ruby Core 和 Ruby on Rails 中是否有可用的错误类列表?有没有办法为您当前的项目获取这样的列表?

重用和/或继承现有错误是否明智,或者我应该维护自己的自定义集?

0 投票
2 回答
507 浏览

python - python-ldap 的异常是否按层次结构组织?

我有这样的代码:

我正在尝试捕获各种异常。但是,所有异常都属于 SERVER_DOWN。例如,当出现超时异常时,它会陷入 SERVER_DOWN 异常等。我想知道是否存在类似于异常层次结构的东西,这就是它总是陷入 SERVER_DOWN 状态的原因。或者这段代码还有其他问题吗?你对这个问题有什么看法吗?提前致谢。

0 投票
4 回答
835 浏览

c# - 如何显示我自己的异常?

我正在开发一个需要添加自定义异常类的 Web 项目。例如,当会话超时发生时,如何显示来自自定义异常类的消息?请帮忙。任何样本都会有所帮助。

到目前为止,这是我在异常类中写的:

需要知道如何将其与会话超时联系起来,从那里我需要编写相同的逻辑。谢谢你。