Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java worp en worpen

Java gooien en gooien

In deze zelfstudie leren we met behulp van voorbeelden het trefwoord throw en throws te gebruiken voor het afhandelen van uitzonderingen.

In Java kunnen uitzonderingen worden onderverdeeld in twee typen:

  • Niet-aangevinkte uitzonderingen: Ze worden niet gecontroleerd tijdens het compileren, maar tijdens runtime. Bijvoorbeeld:ArithmeticException , NullPointerException , ArrayIndexOutOfBoundsException , uitzonderingen onder Error klas, enz.
  • Aangevinkte uitzonderingen: Ze worden gecontroleerd tijdens het compileren. Bijvoorbeeld IOException , InterruptedException , enz.

Raadpleeg Java-uitzonderingen voor meer informatie over aangevinkte en niet-aangevinkte uitzonderingen.

Gewoonlijk hoeven we niet-aangevinkte uitzonderingen niet af te handelen. Dit komt omdat niet-gecontroleerde uitzonderingen optreden als gevolg van programmeerfouten. En het is een goede gewoonte om ze te corrigeren in plaats van ze te behandelen.

Deze tutorial richt zich nu op het afhandelen van gecontroleerde uitzonderingen met behulp van throw en throws .


Java gooit trefwoord

We gebruiken de throws trefwoord in de methodedeclaratie om het type uitzonderingen aan te geven dat erin kan voorkomen.

De syntaxis is:

accessModifier returnType methodName() throws ExceptionType1, ExceptionType2 … {
  // code
}

Zoals je kunt zien aan de bovenstaande syntaxis, kunnen we throws . gebruiken om meerdere uitzonderingen te declareren.


Voorbeeld 1:Java gooit Trefwoord

import java.io.*;
class Main {
  public static void findFile() throws IOException {
    // code that may produce IOException
    File newFile=new File("test.txt");
    FileInputStream stream=new FileInputStream(newFile);
  }

  public static void main(String[] args) {
    try{
      findFile();
    } catch(IOException e){
      System.out.println(e);
    }
  }
}

Uitvoer

java.io.FileNotFoundException: test.txt (No such file or directory)

Als we dit programma uitvoeren, als het bestand test.txt bestaat niet, FileInputStream gooit een FileNotFoundException die de IOException . verlengt klasse.

Als een methode geen uitzonderingen verwerkt, moet het type uitzondering dat erin kan voorkomen worden gespecificeerd in de throws clausule zodat methoden hoger in de aanroepstack ze kunnen verwerken of specificeren met behulp van throws zoekwoord zelf.

De findFile() methode specificeert dat een IOException kan worden gegooid. De main() methode roept deze methode aan en handelt de uitzondering af als deze wordt gegenereerd.


Meerdere uitzonderingen maken

Hier is hoe we meerdere uitzonderingen kunnen maken met behulp van de throws zoekwoord.

import java.io.*;
class Main {
  public static void findFile() throws NullPointerException, IOException, InvalidClassException {
    
    // code that may produce NullPointerException
    … … … 

    // code that may produce IOException
    … … … 

    // code that may produce InvalidClassException 
    … … … 
  }

  public static void main(String[] args) {
    try{
      findFile();
    } catch(IOException e1){
      System.out.println(e1.getMessage());
    } catch(InvalidClassException e2){
      System.out.println(e2.getMessage());
    }
  }
}

Hier, de findFile() methode specificeert dat het NullPointerException . kan gooien , IOException , en InvalidClassException in zijn throws clausule.

Merk op dat we de NullPointerException . niet hebben afgehandeld . Dit komt omdat het een ongecontroleerde uitzondering is. Het is niet nodig om het op te geven in de throws clausule en behandel het.


gooit trefwoord Vs. probeer...vang...eindelijk

Er kunnen verschillende methoden zijn die uitzonderingen kunnen veroorzaken. Schrijven try...catch voor elke methode zal vervelend zijn en de code wordt lang en minder leesbaar.

throws is ook handig als je exception (een exception die moet worden afgehandeld) hebt aangevinkt die je niet wilt vangen in je huidige methode.


Java throw-zoekwoord

De throw trefwoord wordt gebruikt om expliciet een enkele uitzondering te genereren.

Wanneer een uitzondering wordt gegenereerd, wordt de stroom van programma-uitvoering overgedragen van de try blok naar de catch blok. We gebruiken de throw trefwoord binnen een methode.

De syntaxis is:

throw throwableObject;

Een werpbaar object is een instantie van klasse Throwable of subklasse van de Throwable klasse.


Voorbeeld 2:Java throw-zoekwoord

class Main {
  public static void divideByZero() {
    throw new ArithmeticException("Trying to divide by 0");
  }

  public static void main(String[] args) {
    divideByZero();
  }
}

Uitvoer

Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0
    at Main.divideByZero(Main.java:3)
    at Main.main(Main.java:7)
exit status 1

In dit voorbeeld gooien we expliciet een ArithmeticException.

Opmerking: ArithmeticException is een ongecontroleerde uitzondering. Het is meestal niet nodig om ongecontroleerde uitzonderingen af ​​te handelen.


Voorbeeld 3:Gecontroleerde uitzondering weggooien

import java.io.*;
class Main {
  public static void findFile() throws IOException {
    throw new IOException("File not found");
  }

  public static void main(String[] args) {
    try {
      findFile();
      System.out.println("Rest of code in try block");
    } catch (IOException e) {
      System.out.println(e.getMessage());
    }
  }
}

Uitvoer

File not found

De findFile() methode gooit een IOException met het bericht dat we hebben doorgegeven aan de constructeur ervan.

Merk op dat aangezien het een gecontroleerde uitzondering is, we deze moeten specificeren in de throws clausule.

De methoden die dit findFile() . noemen methode moet deze uitzondering afhandelen of specificeren met throws zoekwoord zelf.

We hebben deze uitzondering verwerkt in de main () methode. De stroom van programma-uitvoering wordt overgedragen van de try blok naar catch blokkeren wanneer een uitzondering wordt gegenereerd. Dus de rest van de code in de try blok wordt overgeslagen en instructies in de catch blok worden uitgevoerd.


Java

  1. Java-variabelen en -letters
  2. Java basis invoer en uitvoer
  3. Java-uitdrukkingen, verklaringen en blokken
  4. Java-klasse en objecten
  5. Java abstracte klasse en abstracte methoden
  6. Java geneste en innerlijke klasse
  7. Java-vangst Meerdere uitzonderingen
  8. Java autoboxing en unboxing
  9. Java String Replace(), ReplaceAll() en ReplaceFirst() methode
  10. Java String toLowercase() en toUpperCase() methoden
  11. Java - Object en klassen