Python 异常处理:raise
关键字
原文:https://www.studytonight.com/python/raise-keyword-in-python
而try``except
块是处理异常,相反的raise
关键字是引发异常。
以下是语法:
raise EXCEPTION_CLASS_NAME
举一个简单的用法例子:
raise ZeroDivisionError
回溯(最近一次调用最后一次):文件“main.py”,第 1 行,在
如果您有一段代码,其中除了异常处理之外,您还放置了一些条件语句来验证输入等,那么在条件失败的情况下,我们可以只打印一条消息,或者简单地引发一个异常,然后由通用异常处理机制来处理。
请参见下面的代码,
a = 10
b = 9
try:
print(a/b)
except ZeroDivisionError:
print("Please enter valid integer value")
考虑上面我们已经处理过ZeroDivisionError
的代码,在这个代码中我们想要添加一个新的验证来限制用户输入负值。
然后我们可以简单地添加一个新的条件,并使用raise
关键字来引发一个已经处理过的异常。
a = 10
b = 9
try:
# condition for checking for negative values
if a < 0 or b < 0:
# raising exception using raise keyword
raise ZeroDivisionError
print(a/b)
except ZeroDivisionError:
print("Please enter valid integer value")
通过这个例子,我们想向您解释为什么以及在哪里我们应该使用raise
关键字来显式地引发异常。
raise
不指定异常类
当我们使用raise
关键字时,没有必要同时提供一个异常类。当我们没有提供任何带有raise
关键字的异常类名时,它会重新显示上次发生的异常。
这通常在except
代码块中使用,以重新显示捕获的异常。
例如,
a = 10
b = 0
try:
print(a/b)
except ZeroDivisionError:
raise
回溯(最近一次调用最后一次):文件“main.py”,第 4 行,在
raise
带着争论
我们还可以在引发异常时提供一个参数,该参数与异常类名一起显示在控制台上。
我们可以传递任何字符串来描述异常的原因或其他任何东西。
raise ValueError("Incorrect Value")
回溯(最后一次调用):文件“main.py”,第 1 行,在