最佳实践:在类中处理异常

时间:2014-04-03 05:59:34

标签: python

我很想知道在课堂上处理异常的最佳做法是什么。

据我所知,使用" print"不是一个好习惯。在课堂上的陈述。因此程序员返回值并在主例程中将其打印到类外。如果是这种情况,我该如何验证类中发生的异常?

一个是使用类似的代码,

class temp():
    try:
        import os
        return 1
    except:
        return 0

这只是一个例子。

我的要求是这样的,我想评估一个语句,我想要捕获异常。将此方法视为私有方法,将在内部调用。

E.G。让我试试一个例子。

class test():
    def __init__(self):
        pass

    def read(self):
        try:
            f = open('file.txt')
            fr = f.readlines()
            return fr
        except Exception as e:
            # not sure should i return e or should i return 0 
            # to say that this function failed.

    def write(self):
        self.handle = self.read()
        if self.handle:
            # do something
        else:
            # return the exception

if __name__ == '__main__':
    test_object = test()
    print test_object.write()
猜猜我明白了这一点。

谢谢, 巴拉。

2 个答案:

答案 0 :(得分:2)

这一切都取决于你要做什么,但提出异常以指示错误是指示该方法出错的首选方法。

有时,最佳做法是不在类中处理异常,而是在调用方法时处理异常。假设您的test.read()是:

...
def read(self):
    f = open('file.txt')
    fr = f.readlines()
    return fr

你会这样做:

t = test()
try:
    t.read()
except Exception as e:
    # Handle exception here

通常,您在类中处理异常以执行其他操作,例如清理。而不是将0/1 / String返回到"假设函数失败",您应该引发相同的异常。 E.g:

def read(self):
    try:
        f = open('file.txt')
        fr = f.readlines()
        return fr
    except Exception as e:
        if f:
            f.close()
        raise

答案 1 :(得分:0)

通常最好创建自己的例外,并在出现问题时提出这些例外。然后,使用该类的代码可以捕获这些exeptions并在发生这种情况时做他们想做的事。