首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python异常的最佳实践?

Python异常的最佳实践?
EN

Stack Overflow用户
提问于 2009-05-08 12:44:43
回答 1查看 57.3K关注 0票数 71

创建异常的最佳实践是什么?我刚刚看到了这个,我不知道我是应该感到害怕,还是喜欢它。我在书中读过几次,异常永远不应该包含字符串,因为字符串本身可能会抛出异常。这有什么真实的事实吗?

基本上,根据我对脚本的理解,这样做是因为所有内部Python库都有一个通用的错误消息格式(这是非常需要的),所以我可以理解为什么将错误消息字符串放入是一个好主意。(几乎每个方法都会抛出异常,因为绝对不需要任何无效的东西通过)。

有问题的代码如下:

代码语言:javascript
复制
"""
Base Exception, Error
"""
class Error(Exception):
    def __init__(self, message):
        self.message = message

    def __str__(self):
        return "[ERROR] %s\n" % str(self.message)

    def log(self):
        ret = "%s" % str(self.message)
        if(hasattr(self, "reason")):
            return "".join([ret, "\n==> %s" % str(self.reason)])
        return ret

class PCSException(Error):
    def __init__(self, message, reason = None):
        self.message = message
        self.reason = reason
    def __str__(self):
        ret = "[PCS_ERROR] %s\n" % str(self.message)
        if(self.reason != None):
            ret += "[REASON] %s\n" % str(self.reason)
        return ret

这只是冰山一角,但谁能给我一些洞察,是什么让这是一个可怕的想法?或者是否有更好的异常编码过程/风格。

EN

回答 1

Stack Overflow用户

发布于 2019-01-18 14:38:00

代码语言:javascript
复制
class Error(Exception):
    """Base class for other exceptions"""
    pass

class empty_string_error(Error):
    """Raised when the input value is too large"""
    pass
while(1):
    try:
        if("Your Condition"):
            raise empty_string_error
        else:
            print("OUTPUT")
    except empty_string_error:
        print("APT MESSAGE")
        print(" ")
    finally:
        pint("Mandatory code")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/839636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档