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

2024-04-16 05:33:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在思考如何最好地解决这个问题时遇到了一些困难(我认为主要是因为缺乏经验)。 我在一个类中编写了几个定义,这些定义是从Main调用来执行某些任务的。假设Main可以由任何人出于多种目的编写,因此在类定义中删除代码是不可取的。这些定义的一个基本规则是,如果def1成功地完成了它的任务,那么就可以调用def2。但是如果def1失败,就不能调用def2,因为它也会失败。你知道吗

例如,半伪码,不带e例外情况:你知道吗

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

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

起初我只是表演了一个系统出口()在def1中除了:,但是如前所述,终止整个程序是不可取的,最好让异常被抛出,并让主控制是否调用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

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

有什么建议都可以。我读过一些关于异常的书籍和论坛,但就是不知道如何最好地解决这个问题。你知道吗

谢谢。你知道吗


Tags: to代码frompyif定义mainvariables
1条回答
网友
1楼 · 发布于 2024-04-16 05:33:38

One basic rule of these subclasses is, if subclass1 does its tasks successfully, subclass2 can be called. But if subclass1 fails, subclass2 must not be called as it will fail also.

写第三个类,还是模块函数?或者这两个类不应该被分解为独立的,如果它们真的相互依赖的话。你知道吗

相关问题 更多 >