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 行,在打印(a/b)零除错误:被零除


raise带着争论

我们还可以在引发异常时提供一个参数,该参数与异常类名一起显示在控制台上。

我们可以传递任何字符串来描述异常的原因或其他任何东西。

raise ValueError("Incorrect Value")

回溯(最后一次调用):文件“main.py”,第 1 行,在中引发值错误(“不正确的值”)值错误:不正确的值