Beides sind Syntaxen zur Beschreibung der Ausnahmebehandlung.
Zu den Java-Ausnahmen gehören Fehler, Ausnahme (aktivierte Ausnahme) und RuntimeException (nicht aktivierte Ausnahme).
・ ** Fehler ** ist ein Problem, das vom Programm nicht behoben werden kann (*** Im Gegensatz zu Kompilierungsfehler **, ** Ausnahme **)
Beispiel)
public test() throws IndexOutOfBounsException {
//wird bearbeitet
}
→ Auch wenn dabei IndexOutOfBounsException auftritt, wird die Testmethode ignoriert. IndexOutOfBoundsException tritt auf der Seite auf, auf der die Testmethode ausgeführt wurde.
public test(){
throw new IndexOutOfWxception();
}
→ Bei der Ausführung der Testmethode tritt in der Testmethode eine IndexOutOfWxception-Ausnahme auf.
-Try-Block: Verarbeitung, die eine Ausnahme verursachen kann -Catch-Block: Verarbeitung, wenn eine Ausnahme auftritt -Finally Block: Der letzte Prozess, der auf jeden Fall ausgeführt wird
** [Beispiel einer try-catch-finally-Anweisung] **
public class Main {
public static void main(String[] args){
System.out.println(test(null));
//Schließlich Blockverarbeitung
//Argument ist null
//Wird angezeigt
System.out.println(test(10));
//Der Wert des Arguments ist 10
//Schließlich Blockverarbeitung
//Das Argument war gültig
//Wird angezeigt
}
public static String test(Object obj){
try{
System.out.println("Der Wert des Arguments ist" + obj.toString());
}catch(NullPointerException e){
return "Argument ist null";
}finally{
System.out.println("Schließlich Blockverarbeitung");
}
return "Das Argument war gültig";
}
}
** Syntax, die automatisch die ** close-Methode ** der Ressource aufruft, um die Ressource freizugeben, wenn eine Ausnahme auftritt
** - Ausführungsreihenfolge verarbeiten ** ① Geben Sie die Ressource mit der Methode close frei (2) Ausnahmeverarbeitung des Fangblocks ③ Verarbeiten Sie abschließend den Block
** * Ressourcen vor der Ausnahmebehandlung freigeben **
** [Beispiel für eine Try-with-Resource-Anweisung] ** (Von Java Silver Kuromoto)
public class Main {
public static void main(String[] args){
try(Sample s = new Sample()){
throw new Exception(); //Eine Ausnahme auslösen
}catch(Exception e){
System.out.println("A");
}finally{
System.out.println("B");
}
}
}
class Sample implements AutoCloseable{
public void close() throws Exception{
System.out.println("C"); //C wird angezeigt, wenn die Methode close ausgeführt wird
}
}
↓ "C A B" wird angezeigt. Weil es in der Reihenfolge der Methode close → catch block → fianlly block ausgeführt wird
Referenz) Offizielles Dokument / AutoCloseable-Schnittstelle
Ein Objekt, das Ressourcen (wie Dateien und Socket-Handles) enthalten kann, bis es geschlossen wird. Die Methode close () eines AutoCloseable-Objekts wird automatisch am Ende des Try-with-Resources-Blocks aufgerufen, in dem das Objekt im Ressourcenspezifikationsheader deklariert ist. Dieser Build stellt die sofortige Freigabe sicher und vermeidet Ausnahmen und Fehler bei Ressourcenknappheit, die andernfalls auftreten können.
Recommended Posts