如何在python中使用”raise”关键字

How to use “raise” keyword in Python

本问题已经有最佳答案,请猛点这里访问。

我读过"加薪"的官方定义,但我还是不太明白它的作用。

简单来说,"加薪"是什么?

示例用法会有所帮助。


它有两个目的。

叶特普给了第一个。

It's used for raising your own errors.

1
2
if something:
    raise Exception('My error!')

第二种方法是在异常处理程序中重发当前异常,以便在调用堆栈上进一步处理它。

1
2
3
4
5
6
try:
  generate_exception()
except SomeException as e:
  if not can_handle(e):
    raise
  handle_exception(e)


它用于引起错误。

1
2
if something:
    raise Exception('My error!')

这里有一些例子


没有任何参数的raise是Python语法的一种特殊用法。这意味着获取异常并重新提出它。如果这种用法可以称为reraise

1
    raise

从python语言参考:

If no expressions are present, raise re-raises the last exception that
was active in the current scope.

如果单独使用raise而没有任何理由,则严格用于重新评估。如果在没有重新发出另一个异常的情况下进行,则显示以下错误:RuntimeError: No active exception to reraise


raise导致引发异常。其他一些语言使用动词"throw"来代替。

它的目的是表示一个错误情况;它标志着该情况对于正常流程是异常的。

使用tryexcept的组合,代码'upstream'(一个周围的块,或栈中前面的函数)可以再次捕获引发的异常来处理它。


除了raise Exception("message")raisepython 3引入了一种新的形式,raise Exception("message") from e。它被称为异常链接,它允许您保留原始异常(根本原因)及其追溯。

它与C的内部异常非常相似。

更多信息:https://www.python.org/dev/peps/pep-3134/


您可以使用它来引发错误,作为错误检查的一部分:

1
2
if (a < b):
    raise ValueError()

或者处理一些错误,然后作为错误处理的一部分传递:

1
2
3
4
5
6
try:
    f = open('file.txt', 'r')
except IOError:
    # do some processing here
    # and then pass the error on
    raise