首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理Main中的类生成的异常

如何处理Main中的类生成的异常
EN

Stack Overflow用户
提问于 2011-11-25 11:40:46
回答 1查看 50关注 0票数 0

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

例如半伪码,没有例外:

代码语言:javascript
运行
复制
# 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。

这里是代码的概念性视图,这可能有助于理解我的来历。

代码语言:javascript
运行
复制
# 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

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

任何建议都是很棒的。我读过一些关于异常的书籍和论坛,但就是不能掌握如何最好地解决这种情况。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-25 12:08:05

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

写第三个类,或者模块函数?或者,如果这两个类真的相互依赖,那么它们就不应该被分解为独立的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8264627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档