如何在Python中使用“raise”关键字

时间:2012-12-19 17:27:29

标签: python keyword raise

我已经阅读了“加注”的官方定义,但我仍然不太明白它的作用。

简单来说,什么是“加注”?

示例用法会有所帮助。

6 个答案:

答案 0 :(得分:282)

它有两个目的。

yentup has given the first one.

  

它用于提出自己的错误。

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

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

try:
  generate_exception()
except SomeException as e:
  if not can_handle(e):
    raise
  handle_exception(e)

答案 1 :(得分:36)

它用于引发错误。

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

一些例子here

答案 2 :(得分:26)

没有任何参数的

raise是python语法的特殊用法。这意味着获得异常并重新提升它。如果这种用法可以称为 reraise

    raise

来自The Python Language Reference

  

如果没有表达式,则raise重新引发最后一个异常   在当前范围内活跃。

如果单独使用raise而没有任何参数,则严格用于重新加载 -ing。如果在没有再次引发另一个异常的情况下完成,则会显示以下错误: RuntimeError: No active exception to reraise

答案 3 :(得分:9)

raise会引发异常。其他一些语言使用动词'throw'代替。

它旨在表示错误情况;它标志着情况对于正常流动是特殊的。

使用tryexcept组合,可以通过代码'upstream'(周围的块或堆栈早期的函数)再次捕获引发的异常来处理它。

答案 4 :(得分:9)

除了config, err := rest.InClusterConfig() kind: Pod apiVersion: v1 metadata: name: hostpath-provisioner spec: containers: - name: hostpath-provisioner image: hostpath-provisioner:latest imagePullPolicy: "Never" env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName volumeMounts: - name: pv-volume mountPath: /tmp/hostpath-provisioning volumes: - name: pv-volume hostPath: path: /tmp/hostpath-provisioning 之外,Python 3引入了一个新表单raise Exception("message")。它被称为异常链接,它允许您通过其回溯来保留原始异常(根本原因)。

它非常类似于C#的内部异常。

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

答案 5 :(得分:8)

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

if (a < b):
    raise ValueError()

或者处理一些错误,然后在错误处理过程中传递它们:

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