我在解决这种情况时遇到了一些麻烦(主要是因为我认为缺乏经验)。 我在一个类中编写了几个定义,这些定义是从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
对不起,它确实看起来很混乱,它是我所拥有的一些解决方案的组合,可能不应该混合在一起。
任何建议都会很棒。我已经阅读了一些有关例外的书籍和论坛,但却无法掌握如何最好地解决这种情况。
感谢。
答案 0 :(得分:1)
这些子类的一个基本规则是,如果subclass1执行其任务 成功,可以调用子类2。但是如果subclass1失败了, 不能调用subclass2,因为它也会失败。
编写第三个类或模块函数?或者,如果两个类真正依赖彼此,则不应该将它们分解为独立的。