Java >> Java tutorial >  >> Tag >> throw

Java fanger flere undtagelser og gengiver undtagelsen

Lad os lære java at fange flere undtagelser og genskabe undtagelsen.

Java fanger flere undtagelser og gengiver undtagelsen

Før java 7 ville en programmør fange flere undtagelser én efter én som denne,

try
{
   // code that throw exceptions 1 and 3
}
catch(SQLException e)
{
   logger.log(e);
}
catch(IOException e)
{
   logger.log(e);
}
catch(Exception e)
{
   logger.severe(e);
}

Som du kan se, er der to undtagelser IOException og SQLException, som har samme sætninger. Selvom vi skriver to catch-blokke.

I Java 7 er catch block opgraderet. Vi kan kombinere to catch-blokke til én ved hjælp af multi catch-syntaks.

try
{
   // code that throw exceptions 1 and 3
}
catch(SQLException | IOException e)
{
   logger.log(e);
}
catch(Exception e)
{
   logger.severe(e);
}

Vi bruger flere catch-blok, når et java-program udfører forskellige opgaver ved forekomst af forskellige undtagelser.

BEMÆRK:

  • Brug flere "fangst"-blokke til at fange flere undtagelser og have lignende kode. Derved reduceres kodeduplikering.
  • Flere undtagelser adskilles ved hjælp af rør (|).
  • Bytekode, der genereres af denne attribut, er lille og reducerer derfor koderedundans.

Genyt undtagelse

I rethrow-sætningen kan en bestemt undtagelse, der fanges, omkastes i "catch"-blokken.

Antag, at i et java-program, hvis du fanger en undtagelse og ønsker, at undtagelsen skal være kendt af opkaldsmetoden, i så fald bruges genfremkaldende undtagelse.

BEMÆRK: kun afkrydsede undtagelser kan omkastes.

Lad os se et eksempel.

public class RethrowException
{
   public static void main(String[] args)
   {
      try
      {
         divideByZero();
      }
      catch(ArithmeticException ae)
      {
         System.out.println("Rethrown exception in main() method");
         System.out.println(ae);
      }
   }
   static void divideByZero()
   {
      int a, b, div;
      try
      {
         a = 8 ;
         b = 0 ;
         div = a / b ;
         System.out.println(a + "/" + b + " = " + div);
      }
      catch(ArithmeticException ae)
      {
         System.out.println("Exception caught!!! cannot divide by zero");
         throw ae; // rethrows exception
      }
   }
}

Output:

Undtagelse fanget!!! kan ikke dividere med nul
Gendannet undtagelse i main()-metoden
java.lang.ArithmeticException:/ med nul


Java tag