检查try..catch..finally中是否抛出异常

时间:2014-11-20 19:10:59

标签: python-2.7 try-catch

我有以下代码:

class Test:
    def __init__(self, d):
            try:
                    self.row_number = 1
                    self.name = d['name']
                    self.address = d['address']
                    self.__err_flag = 0
            except Exception, ex:
                    self.__err_flag = 1
            finally:
                    self.val = ex.message if self.__err_flag else None

self.__err_flag的唯一目的是检查是否发现了异常。我显然不能满足条件:self.val = ex.message if ex else None

有没有更好的方法来检查finally块中是否捕获到异常?此外,当我做以下时:

t = Test({'name': 'kitty-katty'})
dir(t) // print _Test__err_flag

有没有办法隐藏课程的属性,以便他们在执行dir()时不会显示?

1 个答案:

答案 0 :(得分:1)

如果您只想在发生异常时分配self.val,请将分配放在except而不是finally

class Test:
    def __init__(self, d):
            self.val = None
            try:
                    self.row_number = 1
                    self.name = d['name']
                    self.address = d['address']
            except Exception, ex:
                    self.val = ex.message