为了账号安全,请及时绑定邮箱和手机立即绑定

通用的except子句工作异常,因为ex在python中没有捕获异常

通用的except子句工作异常,因为ex在python中没有捕获异常

月关宝盒 2022-07-26 16:44:51
我有两个文件:fl_fn1.py中的内容:import fl_fn2def fn1():    print("hi")    try:        fl_fn2.fn2()    except:        print("inside except")    finally:        print("finally")fn1()fl_fn2.py中的内容:import sysdef fn2():    print("fn2")    sys.exit(0)现在,当我从 Windows 命令提示符调用 fl_fn1.py 时,例如;C:\Program Files\Anaconda3\python.exe C:\Users\User1\Desktop\fl_fn1.py那么我的输出是:hifn2inside exceptfinally但是,当我将 fl_fn1.py 中的异常部分更改为:except Exception as ex:    print("inside except")然后我的输出是:hifn2finally异常部分不执行!!!有人可以解释发生了什么。我是 Python 新手。提前致谢 :)
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

SystemExit继承自BaseExceptionnot from Exceptionso 来捕捉你需要except BaseException as e:的。这是为了防止意外捕获异常except Exception as e:



查看完整回答
反对 回复 2022-07-26
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

有一些日志记录可以帮助您了解您的异常类型:


import sys


def fn1():

    print("hi")

    try:

        fn2()

    except:

        print("Exception type: ",sys.exc_info()[0], " occured.")

        print("Exception inherits from: ", sys.exc_info()[0].__bases__)

        print("inside except")

    finally:

        print("finally")


fn1()

正如@Chris_Rands 在他的回复中提到的那样,您会收到SystemExit继承的异常BaseException。


查看完整回答
反对 回复 2022-07-26
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号