- 后者可以访问异常对象的属性。
>>> def catch(): ... try: ... asd() ... except Exception as e: ... print e.message, e.args ... >>> catch() global name 'asd' is not defined ("global name 'asd' is not defined",)
- 前者接受所有异常,而后者只接受你【想要】捕获的异常。例如,前者接受了KeyboardInterrupt而后者没有:
下面是一个简短的列表:>>> try: ... input() ... except: ... pass ... >>> try: ... input() ... except Exception as e: ... pass ... Traceback (most recent call last): File "<stdin>", line 2, in <module> KeyboardInterrupt
如果你想捕捉到其中任何一个,最好这样:issubclass(BaseException, BaseException) #>>> True issubclass(BaseException, Exception) #>>> False issubclass(KeyboardInterrupt, BaseException) #>>> True issubclass(KeyboardInterrupt, Exception) #>>> False issubclass(SystemExit, BaseException) #>>> True issubclass(SystemExit, Exception) #>>> False
来指出你知道自己在做什么。except BaseException:
Python:except和except Exception as e:的区别
于 2022-10-12 18:25:29 首次发布