Python
 Computer >> コンピューター >  >> プログラミング >> Python

スレッドでPython例外を処理する方法は?


指定されたコードは、例外をキャッチするように書き直されます

import sys
import threading
import time
import Queue
def thread(args1, stop_event, queue_obj):
print "start thread"
stop_event.wait(12)
if not stop_event.is_set():
try:
raise Exception("boom!")
except Exception:
queue_obj.put(sys.exc_info())
pass
try:
queue_obj = Queue.Queue()
t_stop = threading.Event()
t = threading.Thread(target=thread, args=(1, t_stop, queue_obj))
t.start()
time.sleep(15)
print "stop thread!"
t_stop.set()
try:
exc = queue_obj.get(block=False)
except Queue.Empty:
pass
else:
exc_type, exc_obj, exc_trace = exc
print exc_obj
except Exception as e:
print "It took too long"

出力

C:/Users/TutorialsPoint1/~.py
start thread
stop thread!
boom!

  1. JavaでUncaughtExceptionHandlerを使用して例外を処理するにはどうすればよいですか?

    UncaughtExceptionHandler スレッド内のインターフェースです クラス。 メインスレッドの場合 キャッチされない例外のために終了しようとしていますjava仮想マシン スレッドのUncaughtExceptionHandlerを呼び出します ファイルへの例外のログ記録などのエラー処理を実行する機会があります またはサーバーへのログのアップロード それが殺される前に。未処理のすべての例外に対して呼び出されるデフォルトの例外ハンドラーを設定できます。 Java5バージョンで導入されました 。 このハンドラーは、以下の java.lang.Threadの静的メソッドを使用して設

  2. Tkinter Pythonでスレッドを使用する方法は?

    Tkinterでは、スレッド化を使用して一度に複数の関数を呼び出すことができます 。アプリケーション内の一部の機能の非同期実行を提供します。 Pythonでスレッドを使用するために、スレッドというモジュールをインポートできます。 スレッドをサブクラス化します クラス。新しいクラス内で、実行を上書きする必要があります メソッドを実行し、そこでロジックを実行します。 したがって、基本的にスレッドを使用すると、一度に複数の作業を行うことができます。アプリケーションでスレッド化を実現するために、Tkinterは Thread()を提供します 機能。 例を挙げて、しばらくスリープしてから別の関数を