“异常”对象不可调用

时间:2019-09-30 14:32:12

标签: python python-3.x

我是Python的新手,我对某种异常方法的实现有疑问。这是代码(缩短了):

class OurException(Exception):
    """User defined Exception"""
....

def get_single_value(command: str, connect_string: str, logger: Logger = None, custom_exception: Exception = OurException) -> Tuple[int, str]:
....
    raise custom_exception("Errors in script\n\nexit .....")

我默认设置为OurException的异常参数无法通过这种方式引发。但是,当我将最后一行的custom_exception更改为ExceptionOurException时,问题消失了。

在OOP上下文中,我想说的是,由于我已将参数定义为Exception,并且以这种方式可以调用Exception,因此可以保证它可以正常工作。但是,我的python解释器和IDE不一致(Pycharm,Python 3.7)。

有些事情没有按照我认为的那样工作,我对此很感兴趣。

1 个答案:

答案 0 :(得分:5)

如果假设custom_exceptionException子类,则需要使用类型提示Type[Exception],而不是Exception本身。否则,类型提示将指定期望Exception实例,并且一般来说Exception的实例是不可可调用的。

from typing import Type


def get_single_value(command: str,
                     connect_string: str,
                     logger: Logger = None,
                     custom_exception: Type[Exception] = OurException) -> Tuple[int, str]:
    ....
    raise custom_exception("Errors in script\n\nexit .....")