Tôi cần vượt qua các ngoại lệ trên một ranh giới chuỗi.Làm cách nào để vượt qua ngoại lệ giữa các chủ đề trong python
Tôi đang sử dụng python được nhúng trong ứng dụng an toàn không phải là chủ đề có một cuộc gọi an toàn chủ đề, post_event (có thể gọi), có thể gọi từ chủ đề chính của nó.
Tôi đang chạy một gugtk gui trong một chủ đề riêng biệt, vì vậy khi một nút được nhấp, tôi đăng sự kiện với post_event và đợi cho đến khi kết thúc trước khi tiếp tục. Nhưng tôi cần người gọi để biết liệu callee có ném ngoại lệ hay không và tăng nó nếu có. Tôi không quá lo lắng về traceback, chỉ là ngoại lệ.
Mã của tôi là khoảng:
class Callback():
def __init__(self,func,*args):
self.func=func
self.args=args
self.event=threading.Event()
self.result=None
self.exception=None
def __call__(self):
gtk.gdk.threads_enter()
try:
self.result=self.func(*self.args)
except:
#what do I do here? How do I store the exception?
pass
finally:
gtk.gdk.threads_leave()
self.event.set()
def post(self):
post_event(self)
gtk.gdk.threads_leave()
self.event.wait()
gtk.gdk.threads_enter()
if self.exception:
raise self.exception
return self.result
Bất kỳ giúp đánh giá cao, cảm ơn.
Chính xác những gì tôi đã làm sau, cảm ơn. Thông thường tôi sẽ sử dụng hàng đợi, v.v .. nhưng tôi đang phát minh ra bánh xe bởi vì chỉ có một thứ sẽ chạy bất kỳ lúc nào trong kịch bản của tôi và tôi muốn nội dung chạy trên chuỗi của ứng dụng để hoàn thành và cung cấp cho tôi một kết quả trước khi tôi thực hiện thêm bất kỳ hành động nào trong chuỗi gtk. Tôi về cơ bản đang cố gắng để giả luồng đơn với hai chủ đề. Nó gây phiền nhiễu nhưng dường như nó hoạt động tốt. – DaedalusFall