python 自定义异常未被捕获

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

我创建了一个这样的异常

class MyException(Exception):
    """
    myexception
    """

然后代码如下:

 try:
        _, _, test = test_str.rpartition("/")
        return test
    except MyException:
        print(
            f'An error occurred while transforming')
    return test_str

当使用

test_str = None
执行代码时,不会捕获异常。如果我将 MyException 替换为 Exception,它会按预期工作。有什么问题吗?

如果我用 Exception 替换 MyException,它会按预期工作。

python
1个回答
0
投票

None.rpartition
会引发
AttributeError
AttributeError
Exception
的子类,因此
except Exception
会捕获它。

AttributeError
不是
MyException
的子类,因此
except MyException
不会 捕获它。

定义一个新的异常提供了一些带有“新”东西的方法来引发,以便更准确地描述它遇到的问题。它没有为您提供一种新的方法来描述方法已经引发的不同异常。

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