Python异常和错误的区别
严格地来说,异常和错误是有区别的。
当 Python 检测到一个错误时,解释器就会指出当前流已经无法继续执行,这时候就出现了异常。
第一个阶段是在引发了一个异常条件(有时候也叫作例外的条件)后发生的。只要检测到错误并且意识到异常条件,解释器就会引发异常。引发也可以叫作触发或者生成,解释器通过它通知当前控制流有错误发生。
Python 也允许程序员自己引发异常,无论异常是 Python 解释器还是程序员引发的,异常就是错误发生的信号,当前流将被打断,用来处理这个错误并采取相应的操作,这就是第二个阶段。
对异常的处理发生在第二个阶段。
异常引发后,可以调用很多不同的操作,可以是忽略错误(记录错误但不采取任何措施,采取补救措施后将终止程序),或是减轻问题的影响后设法继续执行程序。所有的这些操作都代表一种“继续”,或是控制的分支,关键是程序员在错误发生时可以指示程序如何执行。
类似 Python 这样支持引发和处理异常(这更重要)的语言,可以让程序员在错误发生时更直接地控制它们。这样程序员不仅能检测错误,还可以在它们发生时采取更可靠的补救措施。
由于有了运行时管理错误的能力,程序的健壮性有了很大的提高。
错误
从软件方面来说,错误是语法或逻辑上的。- 语法错误指示软件结构上有错误,导致不能被解释器解释或编译器无法编译。这些错误必须在程序执行前纠正。当程序的语法修改正确后,剩下的就是逻辑错误了。
- 逻辑错误可能是由不完整或不合法的输入所致;在其他情况下,还可能是逻辑无法生成、计算或输出结果需要的过程无法执行所致。这些错误通常分别被称为域错误和范围错误。
当 Python 检测到一个错误时,解释器就会指出当前流已经无法继续执行,这时候就出现了异常。
异常
对异常的较好描述是:它是因为程序出现了错误而在正常控制流以外采取的行为。这个行为又分为两个阶段:- 首先是引起异常发生的阶段;
- 然后是检测和采取可能的措施的阶段。
第一个阶段是在引发了一个异常条件(有时候也叫作例外的条件)后发生的。只要检测到错误并且意识到异常条件,解释器就会引发异常。引发也可以叫作触发或者生成,解释器通过它通知当前控制流有错误发生。
Python 也允许程序员自己引发异常,无论异常是 Python 解释器还是程序员引发的,异常就是错误发生的信号,当前流将被打断,用来处理这个错误并采取相应的操作,这就是第二个阶段。
对异常的处理发生在第二个阶段。
异常引发后,可以调用很多不同的操作,可以是忽略错误(记录错误但不采取任何措施,采取补救措施后将终止程序),或是减轻问题的影响后设法继续执行程序。所有的这些操作都代表一种“继续”,或是控制的分支,关键是程序员在错误发生时可以指示程序如何执行。
类似 Python 这样支持引发和处理异常(这更重要)的语言,可以让程序员在错误发生时更直接地控制它们。这样程序员不仅能检测错误,还可以在它们发生时采取更可靠的补救措施。
由于有了运行时管理错误的能力,程序的健壮性有了很大的提高。