我在思考如何最好地解决这种情况时遇到了一些麻烦(我认为主要是因为缺乏经验)。我在一个单独的类中编写了几个定义,可以从Main调用它们来执行某些任务。假设Main可以由任何人出于多种目的编写,因此在类定义中终止代码并不可取。这些定义的一个基本规则是,如果def1成功完成其任务,则可以调用def2。但如果def1失败,就不能调用def2,因为它也会失败。
例如半伪码,没有例外:
# 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对不起,它看起来确实很乱,它是我的一些解决方案的想法的组合,可能不应该混合在一起。
任何建议都是很棒的。我读过一些关于异常的书籍和论坛,但就是不能掌握如何最好地解决这种情况。
谢谢。
发布于 2011-11-25 12:08:05
这些子类的一个基本规则是,如果subclass1成功完成其任务,则可以调用subclass2。但如果subclass1失败,就不能调用subclass2,因为它也会失败。
写第三个类,或者模块函数?或者,如果这两个类真的相互依赖,那么它们就不应该被分解为独立的。
https://stackoverflow.com/questions/8264627
复制相似问题