Cap*_*cus 245 python raise keyword
我已经阅读了"加注"的官方定义,但我仍然不太明白它的作用.
简单来说,什么是"提高"?
示例用法会有所帮助.
Ign*_*ams 297
它有两个目的.
它用于提出自己的错误.
Run Code Online (Sandbox Code Playgroud)if something: raise Exception('My error!')
第二种是在异常处理程序中重新加载当前异常,以便可以在调用堆栈中进一步处理它.
try:
generate_exception()
except SomeException as e:
if not can_handle(e):
raise
handle_exception(e)
Run Code Online (Sandbox Code Playgroud)
jac*_*ill 40
它用于引发错误.
if something:
raise Exception('My error!')
Run Code Online (Sandbox Code Playgroud)
这里有一些例子
Soh*_* Si 34
raise
没有任何参数是python语法的特殊用法.这意味着获得异常并重新提升它.如果这种用法可以被调用reraise
.
raise
Run Code Online (Sandbox Code Playgroud)
来自Python语言参考:
如果不存在表达式,则raise会重新引发当前作用域中处于活动状态的最后一个异常.
如果raise
单独使用而没有任何参数,则严格用于再加注.如果在没有再次引发另一个异常的情况下完成,则会显示以下错误:
RuntimeError: No active exception to reraise
Sta*_*kop 11
此外raise Exception("message")
,raise
Python 3引入了一种新形式raise Exception("message") from e
.它被称为异常链接,它允许您使用其回溯来保留原始异常(根本原因).
它与C#的内部异常非常相似.
更多信息:https: //www.python.org/dev/peps/pep-3134/
Mar*_*ers 10
raise
引发异常.其他一些语言使用动词'throw'代替.
它旨在表明错误情况; 它标志着情况对正常流动是特殊的.
引起的异常可以再次由代码"上游"被捕获(一个周围块,或更早在栈上的函数)来处理它,使用try
,except
组合.
作为错误检查的一部分,您可以使用它来引发错误:
if (a < b):
raise ValueError()
Run Code Online (Sandbox Code Playgroud)
或者处理一些错误,然后在错误处理过程中传递它们:
try:
f = open('file.txt', 'r')
except IOError:
# do some processing here
# and then pass the error on
raise
Run Code Online (Sandbox Code Playgroud)