如何处理Main中的Class生成的异常

时间:2011-11-25 03:40:46

标签: python

我在解决这种情况时遇到了一些麻烦(主要是因为我认为缺乏经验)。 我在一个类中编写了几个定义,这些定义是从Main调用来执行某些任务的。假设Main可以由任何人编写用于多种目的,因此在类定义中杀死代码不是优选的。这些定义的一个基本规则是,如果def1成功完成任务,则可以调用def2。但是如果def1失败,则不能调用def2,因为它也会失败。

e.g。半伪代码,没有例外: -

# Test.py
if __name__ == '__main__'
    # variables imported from a file
    var1 = a
    var2 = b

    class.def1(var1, var1)
    class.def2(var_from_def1)

最初我只是在def1中执行了一个sys.exit(),除了:,但是如前所述,杀死整个程序是不可取的,并且最好让异常被抛出并让Main控件是否调用DEF2。

根据我对异常的理解(尽管有限),这不会起作用,因为异常操作需要在引发之前已经定义。除非它可以在Main中定义,但我宁愿Main可以选择这样做。

首选解决方案是Main将导入变量,将它们传递给def1,如果def1失败,Main未设置为捕获异常,则将彻底停止以下对def2的调用(不会终止进程或显示失败),不知道怎么做,或者如果Main捕获异常,它可以停止对def2的调用,加载另一组变量并再次尝试def1。

以下是代码的概念视图,可能有助于了解我的来源。

# Test.py
if __name__ == '__main__'
    # variables imported from file
    var1 = a
    var2 = b

    while new variables to pull from file:
         try:
             class.def1(var1, var1)
         except:
             print 'def1 exception thrown'
         else:
             class.def2(var_from _def1)


 # class.py
 class class(object):
     def def1(self, var1, var2):
         try:
             do something potentially flawed
         except:
             # this is where I get stuck, not sure how or if I can pass an exception back to the main to decide what to do
             sys.stdout.write('didn't work')
             return something

对不起,它确实看起来很混乱,它是我所拥有的一些解决方案的组合,可能不应该混合在一起。

任何建议都会很棒。我已经阅读了一些有关例外的书籍和论坛,但却无法掌握如何最好地解决这种情况。

感谢。

1 个答案:

答案 0 :(得分:1)

  

这些子类的一个基本规则是,如果subclass1执行其任务   成功,可以调用子类2。但是如果subclass1失败了,   不能调用subclass2,因为它也会失败。

编写第三个类或模块函数?或者,如果两个类真正依赖彼此,则不应该将它们分解为独立的。