Python:引发异常,但不从子函数中引发

问题描述 投票:0回答:2

在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(...)内部引发任何KeyError。

但是,尽管设置了键General value not set,以上示例仍显示general_value

我可以想到以下解决方法,但我想知道是否有更好的方法

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块中的某些部分?

在Python中是否有可能在当前函数级别捕获异常,但不能从被调用的子函数中捕获异常?请考虑以下示例:def func(some_dict):print(some_dict [“ ...

python exception try-catch
2个回答
1
投票

您的解决方法是正确的总体思路,但可以更整洁地完成以下操作:


0
投票

您可以使用嵌套的try / except-但不建议这样做。

© www.soinside.com 2019 - 2024. All rights reserved.