【发布时间】:2020-05-26 15:40:52
【问题描述】:
在 Python 中是否可以在当前函数级别捕获异常,但不能从被调用的子函数中捕获?
请考虑这个例子:
def func(some_dict):
print(some_dict["special_value"])
some_dict = {
"general_value": True,
# "special_value": True
}
try:
if some_dict["general_value"]:
func(some_dict)
except KeyError:
print("General value not set")
我想捕捉 if some_dict["general_value"]: 可能抛出的 KeyError,但从 func(...) 中引发任何 KeyErrors
但是,尽管设置了键 general_value,但上面的示例将显示 General value not set。
我可以想到以下解决方法,但我想知道是否有更好的方法
temp_value = None
try:
temp_value = some_dict["general_value"]
except KeyError:
print("General value not set")
if temp_value:
func(some_dict)
问这个问题的另一种方法:是否可以排除try/except 块中的某些部分被捕获?
【问题讨论】:
-
您的解决方法是正确的方法。
-
另一种方法是在
func中捕获KeyError,然后抛出更具体的应用程序定义的异常。
标签: python exception try-catch