首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >决定在Python中捕获哪些异常

决定在Python中捕获哪些异常
EN

Stack Overflow用户
提问于 2011-06-01 10:42:42
回答 3查看 211关注 0票数 7

假设我正在使用一个库X,该库指定exception.BaseErrorX的所有异常的基类。

现在,还有另一个例外,比如说X.FooError,它当然继承自exception.BaseError,但更通用,假设它处理无效输入。让我们假设还有许多其他这样的类,它们都继承自BaseError,但都适用于一般情况。

代码语言:javascript
运行
AI代码解释
复制
 X
 |
BaseError
 |
FooError

所以我想检查无效的输入。那么我应该捕获哪个异常呢?当然,捕获每个单独的异常是不可能的,所以我捕获了X.BaseError,然后打印了一条错误消息。或者,我可以专门捕获X.FooError,但这样我就会忽略所有其他错误情况。

这是不是执行此操作的标准方法--捕获基本异常?如果是,那么为什么会存在其他例外?对于一般情况,当我们想要捕获特定的异常时?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-01 10:48:28

只捕获您可以处理的异常。如果可以同时处理基异常和派生异常,则同时捕获这两个异常。但是一定要把派生的异常放在第一位,因为找到匹配的第一个异常处理程序就是使用的那个。

代码语言:javascript
运行
AI代码解释
复制
try:
  X.foo()
except X.FooError:
  pass
except X.BaseError:
  pass
票数 11
EN

Stack Overflow用户

发布于 2011-06-01 10:48:07

和往常一样,在Python代码的风格指南PEP-8中也有很好的建议:

在捕获异常时,只要有可能,就会提到 specific exceptions ,而不是使用一个简单的<>D10子句。

里面有更多,但我在这里重现它是没有意义的。

在这种情况下,如果我以不同于BaseErrorBaseError的方式来处理那些需要更通用处理的对象,我就会捕捉到细节。然而,我不会去了解内置的Exception

票数 3
EN

Stack Overflow用户

发布于 2011-06-01 10:49:04

您可以通过在except子句中定义一个特定的异常来捕获它,如下所示:

代码语言:javascript
运行
AI代码解释
复制
try:
    #do stuff
except X.FooError:
    # handle the error
except (X.AnotherError, x.YetAnotherError), exc:
    print 'I'm handling %s' % exc

请注意,您可以通过在元组中列出多个异常类来处理它们。

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

https://stackoverflow.com/questions/6199884

复制
相关文章
python中的异常捕获
无论是编程新手还是老手,都会遇到过程序报错,终止执行的情况,对于python的报错信息,可以分为以下两大类
生信修炼手册
2020/05/28
1.9K0
python – 异常捕获
直接上示例: 大概的意思就是当try下方的代码出现异常的时候就自动执行except下方的代码
Blank.
2023/04/12
1.3K0
python - 异常捕获
在执行python程序时,有时候会报异常,出错的原因可能是自己错写或少写,还有可能是执行程序时由于疏忽或者考虑不全造成了错误,Traceback可以追踪错误点,进行分析改正;这时我们可以对异常进行捕获处理,防止程序终止。
HammerZe
2022/03/25
1.9K0
python - 异常捕获
python异常捕获
下面写一个程序,这个程序接受用户的输入一个的正整数,然后与预设的一个正整数数比较,给出比较结果。 其中用户输入和预设的正整数范围是[0,10). answer = 5guess = int (input ('请输入一个[0,10)范围的正整数:'))if (guess == answer): print ('恭喜!猜对了!')else: print ('很遗憾!猜错了!') int()将输入的字符串格式的数字更改为数字格式的数字。 下面两个执行示例,其中第一次猜对了,第二次猜错了: $ py
mwangblog
2018/07/04
1.6K0
Flask中异常捕获
HTTP 异常主动抛出 abort 方法 抛出一个给定状态代码的 HTTPException 或者 指定响应,例如想要用一个页面未找到异常来终止请求,你可以调用 abort(404)。 参数: code – HTTP的错误状态码 # abort(404) abort(500)   抛出状态码的话,只能抛出 HTTP 协议的错误状态码  捕获错误 errorhandler 装饰器 注册一个错误处理程序,当程序抛出指定错误状态码的时候,就会调用该装饰器所装饰的方法 参数: code_or_ex
汪凡
2019/03/01
1.7K0
【Python】异常处理 ③ ( 捕获所有类型的异常 | 默认捕获所有类型异常 | 捕获 Exception 异常 )
使用 try-except 语句 , 不指定异常类型 , 默认就可以捕获所有类型的异常 ;
韩曙亮
2023/10/11
2.2K0
【Python】异常处理 ③ ( 捕获所有类型的异常 | 默认捕获所有类型异常 | 捕获 Exception 异常 )
python抛出异常和捕获异常_Python异常
class Widget: def __init__(self,size=(40,40)): self._size=size def getSize(self): return self._size def resize(self,width,height): if width<0 or height<0:
全栈程序员站长
2022/11/02
2.9K0
【Python】异常处理 ① ( 异常概念 | 异常处理 | 异常捕获 )
在之前的博客中介绍了文件操作 , 如果以只读的形式打开不存在的文件 , 就会导致异常的出现 ;
韩曙亮
2023/10/11
2420
【Python】异常处理 ① ( 异常概念 | 异常处理 | 异常捕获 )
处理Python未捕获异常
和Java一样,python也提供了对于checked exception和unchecked exception. 对于checked exception,我们通常使用try except可以显示解决,对于unchecked 异常,其实也是提供回调或者是钩子来帮助我们处理的,我们可以在钩子里面记录崩溃栈追踪或者发送崩溃数据. 下面代码可以实现python unchecked exception回调,并输出日志信息.
技术小黑屋
2018/09/04
1.7K0
【Python】异常处理 ② ( 异常类型简介 | 捕获并处理指定异常 | 捕获多个类型异常 )
Python 中的 异常 由 异常类 Exception Class 表示 , 每个异常类都代表一个特定的错误类型 ;
韩曙亮
2023/10/11
3930
【Python】异常处理 ② ( 异常类型简介 | 捕获并处理指定异常 | 捕获多个类型异常 )
Python 怎么捕获警告?(注意:不是捕获异常)
你是不是经常在使用一些系统库或者第三方模块的时候,会出现一些既不是异常也不是错误的警告信息?
青南
2021/03/22
3K0
Python 怎么捕获警告?(注意:不是捕获异常)
Python 怎么捕获警告?(注意:不是捕获异常)
在前面我们介绍了如何在python中使用try except语句来测试代码。try except语句其实只能捕获异常或者错误,但无法捕获警告。在本文中,我向大家介绍几种捕获警告的方法。
自学气象人
2022/11/14
1.8K0
Python 怎么捕获警告?(注意:不是捕获异常)
Python捕获所有异常
老生常谈了,但是在Pyflake检查出E722错误时有时候又犯老毛病。人年纪大了越来越有老年痴呆倾向 -_- …..
happy123.me
2019/12/30
3.6K0
python中--try except 异常捕获以及正则化、替换异常值
#输出 ‘c’ 注:第二种写法的用处:括号里面的所有错误,不管出现里面任何一种错误都用统一的处理方法。
汀丶人工智能
2022/12/21
1.1K0
python中--try except 异常捕获以及正则化、替换异常值
python自定义异常捕获异常处理异常
参考链接: Python自定义异常 def set_inf(name,age):     if not 0 < age < 120:         raise ValueError('超出范围')     else:         print('%s is %s years old' % (name,age)) def set_inf2(name,age):     assert 0 < age < 120,'超出范围'     print('%s is %s years old' % (name,ag
用户7886150
2021/01/22
1.4K0
python抛出异常和捕获异常_python自定义异常
有时,程序需要主动抛出异常,因为某些情况下,你需要反馈消息给更上层的调用者,告诉它有一些异常情况发生,而你抛出异常的地方,没有能力处理它,因此需要向上抛出异常。
全栈程序员站长
2022/11/07
9700
python抛出异常和捕获异常_在try块中可以抛出异常吗
2.解析 关键字try 以及except是 使用Python 解释器主动抛出异常的关键, Python解释器从上向下执行 当运行try中的某行代码出错,会直接进入except中执行下方代码 try中错行下方的代码不会被运行 except…as… 是固定的语法格式 打印traceback信息 finally 后的代码不管是否抛出异常都会执行 except 的原理 调用sys中 exc.info 方法返回基本信息 所以抛出异常的第一步拓展可以在这里开始 注意 每个关键字下方的代码都是独立的(所有的变量都是局部变量)
全栈程序员站长
2022/11/02
4.6K0
领域事件的总线异常怎么捕获?异常的类型有哪些?
在一个软件项目中很难避免会遇到异常情况的发生,如果能够在异常出站以前就预设好解决办法,出现异常之后可以有非常好的处理机制,这样就可以让我们的工作更加高效。那么在领域事件的总线异常怎么捕获呢?下文将会有一个介绍。
用户8715145
2022/03/18
6590
[javaSE] 异常捕获
异常:程序在运行时出现的不正常现象 Throwable |——Error |——Exception 严重级别:Error类和Exception类 异常的处理:try{}catch{}finally{} public class VariableDemo { /** * @param args */ public static void main(String[] args) { try { System.out.println(1
唯一Chat
2019/09/10
1.5K0
python3-抛出、捕获异常
''' 异常:错误发生的信号,程序随之终止 三个部分: 1.traceback 异常的追踪信息(链接) 2.异常的类型 3.异常信息 错误两大类: 1.语法错误(运行前进行判定和修正) 2.逻辑错误 异常种类: AttributeError 属性错误 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输出错误 输入/输出异常;基本上是无法打开文件 ImportError 模块
py3study
2020/01/09
1.6K0

相似问题

如何知道要在Python中捕获哪些异常

241

我应该捕获哪些异常,哪些不应该在Python中捕获

22

在.net中哪些异常绕过捕获块?

12

如何确定在异常值检测中要删除哪些输入?

113

Python捕获异常

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文