gpt4 book ai didi

来自特定模块的 Python 异常标题

转载 作者:行者123 更新时间:2023-11-28 22:52:57 26 4
gpt4 key购买 nike

我有一个正在使用的模块,它有自己的异常(exception)。有没有办法在不明确说明异常的情况下捕获该模块的所有异常?

假设我有一个名为 foo 的模块,它有错误 foo.a foo.b ... foo .z我将如何做类似的事情

try:
method_from_foo() # throws a foo error
except any_foo_exception: # Can be any exception from the module foo
# if foo.a is thrown then it's caught here
# if foo.anything is thrown then it's caught here
pass

而不是做

try:
method_from_foo() # throws a foo error
except foo.a, foo.b, ... foo.z:
pass

我不想做一揽子 Except 因为我想捕获与 foo 无关的所有其他异常

这可能吗?

最佳答案

您通常通过为与您的模块相关的所有异常设置一个基类型来执行此操作。所以如果你有一个 FancyFooBar 模块,你可能想先创建一个 FancyFooBarException:

class FancyFooBarException (Exeption):
pass

然后您可以创建您的异常AB、...,并以此为基础:

class AException (FancyFooBarException):
pass

class BException (FancyFooBarException):
pass

# ...

这样,抛出的所有异常都属于同一类型 FancyFooBarException,但仍保留更具体的类型以进行更特殊的区分。所以你可以这样做:

try:
fancyfoobar.someMethod()
except fancyfoobar.AException:
print('AException!')
except fancyfoobar.FancyFooBarException:
print('One of the other exceptions')
except Exception:
Print('Any other exception.. we do not really want to catch this though')

关于来自特定模块的 Python 异常标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com