You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook中exit为何未抛出SystemExit异常?

Jupyter Notebook中exit()函数的特殊行为

Jupyter Notebook里的exit()和IPython中的实现完全不同,这就是为什么你的测试代码出现差异:

1. IPython中的exit()行为

IPython的exit是自定义封装函数,调用时会抛出SystemExit异常(继承自BaseException)。你的裸except:语句会捕获所有BaseException子类,因此能拦截这个异常并执行print('Did not exit'),之后IPython才会处理后续退出逻辑,所以能看到预期输出。

2. Jupyter Notebook中的exit()行为

Jupyter的内核作为独立后台进程运行,它重载了exit函数:调用exit()时,会直接调用底层的os._exit()终止整个内核进程,完全绕过Python的异常处理机制。这意味着你的try块执行exit(0)后,进程直接被杀死,except块的代码根本没有机会运行,最终表现为内核崩溃重启。

替代方案:演示裸except的问题

如果想在Jupyter中演示裸except能捕获SystemExit这类异常,可以手动抛出异常,而不是调用exit():

try:
    raise SystemExit(0)
except:
    print('Did not exit')

这段代码会正常执行print语句,符合你最初的演示预期。

内容的提问来源于stack exchange,提问作者Daniel Walker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:42:17