如何引发异常以检查不同模块中存在的方法

时间:2014-08-14 17:11:56

标签: python inheritance exception-handling custom-exceptions raise

我有4个模块。 1. run.py 这里我正在进行A类和B类的初始化和设置。 我想做的是:

    try:
        x = x[0]()
    except TestFailure as tf:
        print tf.message

由于for循环,x迭代A类和B类。因此,对于第一次迭代,第1次它正在为A类进行初始化,然后它正在为B进行。

  1. Test.py 我在这里上课了

    class Test(object):
        IS_TEST = False
        teardown_stack = []
        td=[]
        def __init__(self):
            print "in Test init"
            super(Test, self).__init__()
    
        def setup(self):
            print "\tin Test setup"
            #self.add_teardown(foo)
    
  2. 现在

    class TestFailure (None, msg):
    message = ""
        if self.msg:
            message = self.msg
        pass
    
    1. 我有A.py

      class A(Test):
          IS_TEST = True
          def __init__(self):
              test_variable = 9;
              if test_variable < 0:
                  raise TestFailure("test_variable is negative.")
              print "in A init"
              super(A, self).__init__()        
      
          def setup(self):
              print "in A setup"
      
    2. 我的最后一个模块是B.py

      class B(A):
          IS_TEST = True
          def __init__(self):
              test_variable = 9;
              if test_variable < 0:
                  raise TestFailure("test_variable is negative.")
              print "in B init"
              super(B, self).__init__()        
      
          def setup(self):
              print "\tin B setup"
      
    3. 之前我没有使用python异常,因此我根本不熟悉它们。怎么做这个工作?我到底哪里错了? 我希望通过这种方法引发异常,在进行初始化之前,只有当test_variable为正时才会发生操作。

1 个答案:

答案 0 :(得分:0)

我无法理解脚本的流程,但就有关异常类的问题而言,为什么不在创建异常类时继承Exception类?

class TestFailure(Exception):
    pass

其余来自继承。您可以在此处找到更多信息:Proper way to declare custom exceptions in modern Python?