0

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

为了更好地理解,假设我有 3 个课程。

C1 = 主类

TraceBack = 其他类

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

现在我有了一个想法,只在主类中保留回溯。由于其他类是在主类中导入的。

我的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 中进行引用的实际方法。

4

1 回答 1

0

当您单击该按钮时,Python 已经远远超过try..exceptself.c3_Inst = C3(1,0). 如果要在 中捕获异常c1.py,则需要将try..exceptaround放在app.exec_().

于 2013-05-02T12:07:02.737 回答