我已经阅读了“加注”的官方定义,但我仍然不太明白它的作用。
简单来说,什么是“加注”?
示例用法会有所帮助。
答案 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)
答案 2 :(得分:26)
raise
是python语法的特殊用法。这意味着获得异常并重新提升它。如果这种用法可以称为 reraise
。
raise
来自The Python Language Reference:
如果没有表达式,则raise重新引发最后一个异常 在当前范围内活跃。
如果单独使用raise
而没有任何参数,则严格用于重新加载 -ing。如果在没有再次引发另一个异常的情况下完成,则会显示以下错误:
RuntimeError: No active exception to reraise
答案 3 :(得分:9)
raise
会引发异常。其他一些语言使用动词'throw'代替。
它旨在表示错误情况;它标志着情况对于正常流动是特殊的。
使用try
,except
组合,可以通过代码'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#的内部异常。
答案 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