Versuchen wir es:
%Vor%Der obige Code liefert die folgenden Ergebnisse:
%Vor%
Die Antwort auf Ihre Frage ist also, dass eine ausgelöste Exception nur den Thread abstürzt, in dem sie sich befindet, nicht das ganze Programm.
Aus der Threading-Dokumentation :
Sobald die Aktivität des Threads gestartet wurde, wird der Thread berücksichtigt 'am Leben'. Es hört auf zu leben, wenn seine Methode run () beendet wird - entweder normal oder durch Auslösen einer nicht behandelten Ausnahme. Das is_alive () Methode testet, ob der Thread lebt.
Und auch:
join (Zeitüberschreitung = Keine)
Warten Sie, bis der Thread beendet ist. Dies blockiert den aufrufenden Thread, bis der Thread, dessen Join () -Methode aufgerufen wird, beendet wird - entweder normalerweise oder durch eine unbehandelte Ausnahme - oder bis zum optionalen Timeout auftritt.
Mit anderen Worten, die nicht abgefangene Ausnahme ist eine Möglichkeit, einen Thread zu beenden, und wird im Aufruf join
des übergeordneten Objekts in diesem Thread erkannt.
Tags und Links python multithreading exception