6

在我参加 Udacity 的一门关于代码调试的在线课程中,教授说最好使用 assert 而不是在实际代码中抛出异常。

尽管在我的编程生涯中,我从未见过有人使用它。

你知道为什么会这样吗?你同意?

PS:下图是 Python 代码,但我猜这个想法适用于所有编程语言。此外,这门课程只有 4 个月大,所以我认为教授的方法是最现代的方法。

在此处输入图像描述

4

1 回答 1

3

Assert 仅用于调试,并允许您在单行中检查不变量。断言和类似的宏在测试框架中无处不在。除了例外,你真的需要关心你的库或程序的其余部分在做什么。断言非常简单。

它将使程序崩溃,而不会引起它的任何歧义-您的断言导致了它。在调试器中去那里更容易。异常可能会被捕获并且不会停止程序,或者可能会导致副作用,例如从通常不会发生的地方展开堆栈,调用所有析构函数等,而您并不真正关心它因为你在调试。

对于异常,您需要声明要抛出的函数,必须在 C++ 等语言中启用异常。

如果您是交互式调试,而不仅仅是在批处理模式下运行测试用例,并且您的示例是在 Python 中,我认为您会发现一个启动 pdb 并在此处停止程序的函数更有帮助。

于 2013-02-23T23:02:08.090 回答