这两者之间的区别是什么:
except:
# do something和
except BaseException as be:
print(be)我的意思是,在第一种情况下,所有可能的异常都会被捕获,但对于第二种情况,这是真的吗?
另外,使用第一种情况可以打印错误消息吗?
发布于 2017-06-20 22:31:38
实际上,对于任何当前的发行版来说,except:和except BaseException:之间没有区别。
这是因为您不能只是将任何类型的对象作为异常引发。raise statement明确禁止引发其他任何内容:
...raise将第一个表达式计算为异常对象。它必须是
BaseException**.**的子类或实例
大胆强调我的观点。然而,情况并不总是如此,在较早的Python版本(2.4及之前)中,您也可以使用字符串作为例外。
这样做的好处是,您可以轻松地访问捕获的异常。为了能够添加as targetname,您必须捕获特定类的异常,并且只有BaseException才会这样做。
但是,您仍然可以使用sys.exc_info()访问当前活动的异常:
except:
be = sys.exc_info()[1] 选择你觉得对你未来的自己和你的同事来说更具可读性的内容。
https://stackoverflow.com/questions/44655854
复制相似问题