【发布时间】:2025-12-10 06:35:01
【问题描述】:
我的示例代码:
from tkinter import *
class first:
def __init__(self):
self.top = Tk()
...
def test(self):
try:
self.value = self.dict[key]
except KeyError:
try:
second()
except ValueError:
print('Finally')
class second:
def __init__(self):
self.frame = Toplevel()
...
self.button = ttk.Button(parent=self.frame, text='GO', command=self.go_click)
...
def go_click(self):
raise ValueError('Not Valid')
这只是一个例子!问题是 ValueError 是由第二类引发的,但不是由第一类的 except 子句处理的。在回溯下方:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1487, in __call__
return self.func(*args)
File "........", line xxx, in goclick
raise ValueError('Not Valid')
ValueError: Not Valid
如何正确处理?
谢谢,
【问题讨论】:
-
因为你在
go_click()之前完成了对second()的调用 -
你没有处理
go_click。 -
您的
try只会捕获在创建类实例期间发生的异常。它不会捕获类的任何部分引发的所有异常。 -
谢谢@BrenBarn,我将不得不以另一种方式处理它。