Ihr Verständnis ist korrekt. Wenn eine IOException
geworfen wird, wird der catch
-Handler sie abfangen und sofort seine eigene RuntimeException
werfen. Diese Ausnahme kann an anderer Stelle im Programm abgefangen werden, in diesem Fall wird die Kontrolle beim Handler aufgenommen, oder sie bleibt unerfasst und beendet den aktuellen Thread.
Ein Weg, um zu verstehen, was hier passiert, ist folgender - eine IOException
ist eine geprüfte Ausnahme, was bedeutet, dass sie abgefangen werden muss. Wenn sie nicht abgefangen wird, wird das Programm nicht kompiliert. Der obige Code besagt, dass immer wenn eine IOException
abgefangen wird, eine RuntimeException
geworfen wird, die eine ungeprüfte Ausnahme ist. Diese Ausnahme muss nicht vom Programmierer abgefangen werden. Beachten Sie, dass diese RuntimeException
mit der gefangenen IOException
als Parameter konstruiert wird. Dies bedeutet, dass wenn die RuntimeException
später abgefangen wird, derjenige, der sie abfängt, feststellen kann, dass der zugrundeliegende Grund eine IOException
war und entsprechend damit umgehen kann.
Hoffentlich hilft Ihnen das!