我在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中跟踪工作的实际方法是否与小部件信号相关联。
答案 0 :(得分:0)
当您点击该按钮时,Python已经过了try..except
self.c3_Inst = C3(1,0)
周围的c1.py
。如果您想在try..except
中捕获异常,则需要将app.exec_()
放在{{1}}附近。