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

Python 最佳实践:在类中处理异常,python,Python,我想知道在类中处理异常的最佳实践是什么 据我所知,在课堂上使用“print”语句不是一个好的做法。因此,程序员返回值并在主例程的类外打印它。如果是这种情况,我如何验证类中发生的异常 一种是使用类似这样的代码 class temp(): try: import os return 1 except: return 0 这只是一个例子 我的要求是这样的,我想计算一个语句,我想捕捉异常。将此方法视为私有方法,它将在内部调用 让我举个例子

我想知道在类中处理异常的最佳实践是什么

据我所知,在课堂上使用“print”语句不是一个好的做法。因此,程序员返回值并在主例程的类外打印它。如果是这种情况,我如何验证类中发生的异常

一种是使用类似这样的代码

class temp():
    try:
        import os
        return 1
    except:
        return 0
这只是一个例子

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

让我举个例子试试

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()
我想我已经说清楚了

谢谢,
Bala.

这完全取决于您试图做什么,但引发异常以指示错误是指示方法出错的首选方法

有时,最佳实践不是在类中处理异常,而是在调用方法时处理异常。假设您的
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来“假设函数失败”。例如:

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

通常最好创建自己的异常,并在出现问题时提出这些异常。然后,使用该类的代码可以捕获这些例外,并在发生这种情况时执行它们想要执行的任何操作。

“不确定是否应该返回e”。返回(而不是引发)异常肯定是。。。非常规的。让异常传递给调用方或捕获它,处理它,可能重新引发它或另一个异常(可能是自定义异常)。脱离主题:如果不声明任何实例属性Interest,则可以跳过构造函数
\uuuuuu init\uuuuu
,谢谢。但是这是最佳实践吗?您正在引发相同的异常,您应该在之后不使用任何内容就使用
raise
。谢谢。。让我试试。@Bala是的,最好的做法是引发异常,而不是返回0/1/字符串来表示异常。将更新该帖子。