如何在python中提升主类中其他类的回溯

时间:2013-05-02 11:46:22

标签: python pyqt4

我在python中编码并添加了Trace-backs以进行错误处理。

为了更好地理解,我们假设我有3个班级。

C1 =主类

TraceBack =其他类

我的Main类将导入其他类(TraceBack)并创建这些类的实例并按编码进行。对于错误处理,我在所有3个类中导入了traceback模块,并在try: except:内更新了我的代码。所有内容都正常工作。

现在我有了一个想法,只在主要班级继续追溯。其他类在主类中导入。

我的 C1.py 如下所示

import traceback
from TraceBack import C3

class tracebackTest():

    def __init__(self):

        try:

            self.c3_Inst = C3(1,0)
            self.c3_Inst.sub()             

        except Exception as ex:

            TraceBk = traceback.format_exc()
            print 'Error Raised from Trace Back\n%s' % TraceBk

if __name__ == '__main__':

    import sys
    from PyQt4 import QtGui

    app = QtGui.QApplication(sys.argv)
    win = tracebackTest()
    sys.exit(app.exec_()) 

我的 TraceBack.py 如下所示

from PyQt4 import QtGui

class C3(QtGui.QMainWindow):

    def __init__(self,x,y):

        super(C3,self).__init__()

        self.a = x
        self.b = y

        button = QtGui.QPushButton('Test',self)
        button.clicked.connect(self.sub)
        self.show()


    def sub(self):

        result = self.a / self.b

        print 'result %s' % result

C1.py创建实例后,我立即调用了self.c3_Inst.sub(),这将在下面从异常中回溯。

Error Raised from Trace Back
Traceback (most recent call last):
  File "D:\PBL_Data\Development\Showtime_Python\RnD\TraceBack_1a.py", line 25, in __init__
    self.c3_Inst.sub()
  File "D:\PBL_Data\Development\Showtime_Python\RnD\TraceBack.py", line 37, in sub
    result = self.a / self.b
ZeroDivisionError: integer division or modulo by zero

但是当我点击窗口中的按钮时。我得到以下错误,这不是C1.py

中的异常引发的
Traceback (most recent call last):
  File "D:\PBL_Data\Development\Showtime_Python\RnD\TraceBack.py", line 37, in sub
    result = self.a / self.b
ZeroDivisionError: integer division or modulo by zero

任何人都能告诉我在PyQt中跟踪工作的实际方法是否与小部件信号相关联。

1 个答案:

答案 0 :(得分:0)

当您点击该按钮时,Python已经过了try..except self.c3_Inst = C3(1,0)周围的c1.py。如果您想在try..except中捕获异常,则需要将app.exec_()放在{{1}}附近。