首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:异常名称使用通配符的try...except?

Python:异常名称使用通配符的try...except?
EN

Stack Overflow用户
提问于 2012-05-07 13:25:49
回答 2查看 3.9K关注 0票数 3

我只想排除变异体抛出的异常。然而,在那里有很多可能的例外。有没有什么方法可以通配符(通过regexp/etc)由except处理的异常?另一种选择是愚蠢的.

代码语言:javascript
复制
mutagen.apev2.APEBadItemError
mutagen.apev2.APENoHeaderError
mutagen.apev2.KeyError
mutagen.apev2.ValueError
mutagen.easyid3.EasyID3KeyError
mutagen.easyid3.KeyError
mutagen.easyid3.ValueError
mutagen.flac.FLACNoHeaderError
mutagen.flac.FLACVorbisError
mutagen.flac.TypeError
mutagen.id3.EnvironmentError
mutagen.id3.EOFError
mutagen.id3.ID3BadCompressedData
mutagen.id3.ID3BadUnsynchData

以此类推:P

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-07 13:30:40

还有一种不那么麻烦的方法,尽管这仍然是一种轻微的痛苦,但每个模块都实现了一个“错误”,所有相关的错误都是从这个“错误”扩展而来的。

代码语言:javascript
复制
# Please note, the exception class truly is lower cased as indicated
mutagen.id3.error
mutagen.flac.error
mutagen.apev2.error

# mutagen.easyid3 errors extend the mutagen.id3.error class
票数 4
EN

Stack Overflow用户

发布于 2012-05-07 13:42:52

这也相当难看,但在需要截取大量、非常异构的异常集的情况下,这样的东西可能是一个可行的选择。至少它隔离了其他地方的长长的异常列表。

代码语言:javascript
复制
>>> errors = {NameError:'a', ValueError:'b'}
>>> try:
...     cornucopia
... except Exception as e:
...     e_type = type(e)
...     if e_type in errors:
...         print errors[e_type]
...     else:
...         raise
... 
a

显然,如果可能的话,这是应该避免的;在您的特定情况下,Bryan Moyles的解决方案可能更可取。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10477066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档