如何在 Python 中实现用户定义的异常? [复制]

Posted

技术标签:

【中文标题】如何在 Python 中实现用户定义的异常? [复制]【英文标题】:How can I achieve user defined exception in Python? [duplicate] 【发布时间】:2017-05-09 17:30:18 【问题描述】:

有许多内置的异常类,如 EOFError、KeyboardInterrupt 等。但是我怎样才能创建自己的异常类。例如,如果我想保持约束,用户应该输入一个长度至少为 3 的字符串。

【问题讨论】:

【参考方案1】:

检查此代码是否存在用户定义的异常:

class ShortInputException(Exception):
    def __init__(self,length,atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast

try:
    text = input('Enter some text: ')
    if len(text) < 3:
        raise ShortInputException(len(text),3)
except EOFError:
    print('It is end of file.')
except ShortInputException as ex:
    print('ShortInputException: You entered 0 length long text. Expected text size is 1'.format(ex.length,ex.atleast))
except KeyboardInterrupt:
    print('You interrupted the program execution.')
else:
    print('No exception/s raised.')
    print('You entered: 0'.format(text))

【讨论】:

【参考方案2】:

你可以在你的类中定义你的异常,也可以在下面创建你自己的异常类。

/** * 定义一个扩展异常的异常类 */

类 Your_Exception 扩展异常:

// redefine exception with a message
public function __construct($message, $code = 0, Exception $previous = null):

    //Call Parent constructor
    parent::__construct($message, $code, $previous);


// custom string representation of object
public function __to_String():
    return __CLASS__ . ": [$this->code]: $this->message\n";


public function user_defined_Function() :
    echo "user defined exception exception\n";

【讨论】:

以上是关于如何在 Python 中实现用户定义的异常? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中实现高效的过滤逻辑?

如何在 webflux 中实现自定义身份验证管理器时对未经授权的请求响应自定义 json 正文

str() 如何在 python 中实现?

如何在 xpath 表达式中实现具有名称的用户定义函数?

如何在python中实现一个自定义的列表或字典

如何在nestjs graphql中实现用户保护