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

Posted

技术标签:

【中文标题】引发异常“这是错误”和引发“这是错误”之间的区别? [复制]【英文标题】: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()

【讨论】:

以上是关于引发异常“这是错误”和引发“这是错误”之间的区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Amazon S3 在创建对象时会引发 cURL 错误

在 Ruby 中引发异常与抛出异常有啥区别?

shell 向python传参数,空格引发的问题

ClassCast 错误:Java 7 与 Java 8

Visual Studio Project System遇到错误

关于中断异常信号之间的区别