python 错误 & 异常的 准确定义是什么?
教程上给的解释:
- 从软件方面来说,错误是语法或是逻辑上的。语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译。这些错误必须在程序执行前纠正。
- 对异常的最好描述是: 它是因为程序出现了错误而在正常控制流以外采取的行为。这个行为又分为两个阶段: 首先是引起异常发生的错误,然后是检测(和采取可能的措施)阶段。
问题1:
第一个"语法错误定义"我理解了,但对“异常定义”很模糊不解,在我看来它根本不算定义,只是对一个现象的描述,而且我还是看不懂。
有没有很白话很浅显直白的异常定义?
问题2:
查了好多网络资料,虽然良莠不齐,我目前得出的结论:错误与异常的最大区别就是 “出现的时机”。
错误出现在 代码运行之前的编译阶段,那么是不是可以理解为「.py源文件编译成.pyc字节码的阶段?」
如果上述成立,那么是否可同理推断:异常就只出现在「.pyc字节码」被python解释器转换为机器码的阶段?
虽然‘python-错误与异常处理’的那章课程结束了,我也能写一点try/except的异常处理代码,但总觉得没有真正理解错误/异常的本质。
回答:
一个是 error
,一个是 exception
。
通常来说的话 error
往往要么发生在编译阶段(比如语法问题),要么在运行时已经脱离了程序所能控制的范围(也即无法 try-except,比如操作系统层面上的问题)。
而 exception
从字面意思上看就是意外,一般来说都是运行时产生的,因为代码上存在某种逻辑问题而导致出现意料之外的结果,大多数情况下是都可以 try-except 来处理。
以上仅仅是编程语境下两者的一个泛泛的区别,而且不同语言中对二者的定义或涵盖范围也不相同。比如 JavaScript 中只有 error
、没有 exception
;而 Java 中两者的不同又体现在 OOP 的继承关系上;Python 中更是官方文档中直接说 An exception
is an error
that happens during execution of a program. When that error
occurs, Python generate an exception
that can be handled, which avoids your program to crash. (运行时发生了 error
的时候,由 Python 生成一个 exception
,可以被捕获处理,以防程序崩溃)。所以不可一概而论。
日常生活的时候二者可以理解为近义词,甚至在英文的技术社区中提问题,二者都可以混用,你也不用去刻意区分。
以上是 python 错误 & 异常的 准确定义是什么? 的全部内容, 来源链接: utcz.com/p/937845.html