首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >except和except BaseException之间的区别是什么

except和except BaseException之间的区别是什么
EN

Stack Overflow用户
提问于 2017-06-20 22:28:42
回答 1查看 12.5K关注 0票数 23

这两者之间的区别是什么:

代码语言:javascript
复制
except:
    # do something

代码语言:javascript
复制
except BaseException as be:
    print(be)

我的意思是,在第一种情况下,所有可能的异常都会被捕获,但对于第二种情况,这是真的吗?

另外,使用第一种情况可以打印错误消息吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-20 22:31:38

实际上,对于任何当前的发行版来说,except:except BaseException:之间没有区别。

这是因为您不能只是将任何类型的对象作为异常引发。raise statement明确禁止引发其他任何内容:

...raise将第一个表达式计算为异常对象。它必须是 BaseException**.**的子类或实例

大胆强调我的观点。然而,情况并不总是如此,在较早的Python版本(2.4及之前)中,您也可以使用字符串作为例外。

这样做的好处是,您可以轻松地访问捕获的异常。为了能够添加as targetname,您必须捕获特定类的异常,并且只有BaseException才会这样做。

但是,您仍然可以使用sys.exc_info()访问当前活动的异常:

代码语言:javascript
复制
except:
    be = sys.exc_info()[1] 

选择你觉得对你未来的自己和你的同事来说更具可读性的内容。

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

https://stackoverflow.com/questions/44655854

复制
相关文章

相似问题

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