jupyter:如何停止执行错误?

时间:2016-05-28 20:26:06

标签: python jupyter

在python中防御性地中止执行的常用方法是简单地执行以下操作:

if something_went_wrong:
    print("Error message: goodbye cruel world")
    exit(1)

然而,当使用 jupyter notebook 时,这不是一个好习惯,因为这似乎完全中止了内核,这并不总是需要。除了hack-y inifinte循环之外,jupyter中是否有正确/更好的方法?

1 个答案:

答案 0 :(得分:9)

不,exit() 通常是中止Python执行的方式。 exit()旨在立即使用状态代码停止解释器。

通常,你会编写一个类似的脚本:

 if __name__ == '__main__':
     sys.exit(main())

尽量不要将sys.exit()放在代码中间 - 这是不好的做法, 并且您可能最终得到非关闭的文件句柄或锁定的资源。

要做你想做的事,只需提出正确类型的例外。如果它传播到eval循环,IPython将停止执行笔记本。

此外,它还将为您提供有用的错误消息和堆栈跟踪。

if type(age) is not int:
    raise TypeError("Age must be an integer")
elif age < 0:
    raise ValueError("Sorry you can't be born in the future")
else :
    ...

您甚至可以使用%debug检查堆栈验尸,看看哪里出了问题,但这是另一个主题。