python异常和错误的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python异常和错误的区别相关的知识,希望对你有一定的参考价值。

什么是错误?
错误分为两种情况:第一种语法错误,代码不符合解释器或者编译器语法;第二种逻辑错误,不完整或者不合法输入或者计算出现问题。
什么是异常?
所谓的异常就是执行过程中出现万体导致程序无法执行,同样分为两种情况:第一种程序遇到逻辑或者算法问题;第二种运行过程中计算机错误,内存不够或者IO错误。
Python中错误和异常有什么区别?
错误是代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改;
而异常分为两个步骤,异常产生,检查到错误且解释器认为是异常,抛出异常;第二是异常处理,截获异常,忽略或者终止程序处理异常。
从软件方面来说,错误是语法或者逻辑上的问题,语法错误指示软件的结构上有错误,导致不能被解释器解释或者编译器无法编译,这些错误必须在程序执行前进行纠正;当程序语法正确后,剩下的就是逻辑错误问题,逻辑错误可能是由于不完整或不合法的输入导致,在其他情况下,可能是逻辑无法生成、计算或输出结果需要的过程无法执行。这些错误通常分别被称为域错误和范围错误。
当Python检测到一个错误时,解释器就会指出当前已经无法继续执行下去,这时就出现异常。
而异常它是因为程序出现了错误而在正常控制流以外采取的行为,这个行为分为两个阶段:首先是引起异常发生的错误,然后是检测阶段;
第一个阶段是在发生了一个异常条件后发生的,只要检测到错误并且意识到异常条件,解释器会引发一个异常,引发也可以叫作触发或生成,解释器通过它通知当前控制流有错误发生;
Python也允许程序员自己引发异常,无论是Python解释器还是程序员引发的,异常就是错误发生的信号,当前流将被打断,用来处理这个错误并采取相应的操作,这就是第二个阶段。
对异常的处理发生在第二阶段,异常引发后,可以调用很多不同的操作,可以是忽视错误,或是减轻问题的影响后设法继续执行程序,所以的这些操作都代表一种继续,或是控制的分支,关键是程序员在错误发生时可以指示程序如何执行。
类似Python这样支持引发和处理异常的语言,可以让开发人员在错误发生时更直接地控制它们,程序员不仅仅有了检测错误的能力,还可以在它们发生时采取更可靠的补救措施。
参考技术A random.uniform
用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。

引发异常“这是错误”和引发“这是错误”之间的区别? [复制]

【中文标题】引发异常“这是错误”和引发“这是错误”之间的区别? [复制]【英文标题】:Difference between raise Exception 'This is the error' and raise 'This is the error'? [duplicate] 【发布时间】:2019-12-26 02:31:38 【问题描述】:

我见过有人同时做这两种方式,但我看不出它们之间的区别:

raise Exception('This is the error')

raise 'This is the error'

我应该使用哪一个?

【问题讨论】:

raise 'This is the error' 那行不通。你在哪里看到的? raise Exception 'This is the error' 这也不行。也许你的意思是raise Exception('This is the error') 很久很久以前,人们可以提出任何价值作为例外,但我认为“特性”在 Python 2.0 中被消除了。 非常老的 Python 版本中的 raise 语句与现在完全不同;例如,见docs.python.org/release/1.5.2p2/ref/raise.html。 【参考方案1】:

也不要使用。首先是语法错误:

>>> raise Exception "This is an error"
  File "<stdin>", line 1
    raise Exception "This is an error"
                                     ^
SyntaxError: invalid syntax

而第二个是类型错误(你不能“提升”str 值):

>>> raise "this"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: exceptions must derive from BaseException

正确的形式是使用错误消息作为参数调用异常类型:

raise Exception("this is the error")

在所需的异常不需要参数的情况下,引发 Exception 类型本身等同于引发创建时不带参数的实例。

raise Exception   # equivalent to raise Exception()

【讨论】:

以上是关于python异常和错误的区别的主要内容,如果未能解决你的问题,请参考以下文章

--异常处理

引发异常“这是错误”和引发“这是错误”之间的区别? [复制]

PHP:异常和可捕获的致命错误有啥区别?

Javascript中的错误和异常有啥区别?

python中= 和==的区别

java中错误(error)和异常(exception)有啥主要区别?