logo

kast og kast i Java

I Java er undtagelseshåndtering et af de effektive midler til at håndtere runtime fejl, så det regelmæssige flow af applikationen kan bevares. Det håndterer runtime fejl såsom NullPointerException ArrayIndexOutOfBoundsException osv. For at håndtere disse fejl effektivt giver Java to nøgleord throw og throws.

Java kast

Throw nøgleordet i Java bruges til eksplicit at kaste en undtagelse fra en metode eller en hvilken som helst kodeblok. Vi kan smide enten markeret eller umarkeret undtagelse. Køreordet throw bruges hovedsageligt til at skabe tilpassede undtagelser. 

Syntaks:



kaste Forekomst

Hvor instans er et objekt af typen Throwable (eller dets underklasser såsom Exception).

Eksempel:

throw new ArithmeticException('/ med nul');

Men denne undtagelse, dvs. instans, skal være af typen Kan kastes eller en underklasse af Kan kastes

Udførelsesstrømmen af ​​programmet stopper umiddelbart efter at throw-sætningen er udført og den nærmeste omsluttende prøve blok kontrolleres for at se, om den har en fangst erklæring, der matcher typen af ​​undtagelse. Hvis den finder et match kontrolleret, overføres det til den erklæring ellers næste vedhæftende prøve blok er kontrolleret og så videre. Hvis der ikke matches fangst er fundet, vil standard undtagelsesbehandleren standse programmet. 

type variabler java

Eksempel: Dette eksempel viser, hvor en undtagelse kastes opfanget og genkastet inde i en metode.

Java
class Geeks {  static void fun()  {  try {  throw new NullPointerException('demo');  }  catch (NullPointerException e) {  System.out.println('Caught inside fun().');  throw e; // rethrowing the exception  }  }  public static void main(String args[])  {  try {  fun();  }  catch (NullPointerException e) {  System.out.println('Caught in main.');  }  } } 

Produktion
Caught inside fun(). Caught in main. 

Forklaring: Ovenstående eksempel viser brugen af ​​nøgleordet throw til eksplicit at kaste en NullPointerException. Undtagelsen er fanget inde i sjov() metode og genkastet, hvor den så fanges i main() metoden.

Eksempel: Dette eksempel viser en aritmetisk undtagelse.

Java
// Throwing an arithmetic exception class Geeks {  public static void main(String[] args){  int numerator = 1;  int denominator = 0;  if (denominator == 0) {  // Manually throw an ArithmeticException  throw new ArithmeticException('Cannot divide by zero');  } else {  System.out.println(numerator / denominator);  }  } } 

Produktion:

Hangup (SIGHUP)  
Exception in thread 'main' java.lang.ArithmeticException: Cannot divide by zero
at Geeks.main(Geeks.java:9)

Forklaring: Ovenstående eksempel viser en undtagelse ved brug af throw, hvor en ArithmeticException eksplicit kastes på grund af division med nul.

Java kaster

kaster er et nøgleord i Java, der bruges i signaturen af ​​en metode for at indikere, at denne metode kan give en af ​​de anførte typeundtagelser. Den, der ringer til disse metoder, skal håndtere undtagelsen ved hjælp af en try-catch-blok. 

Syntaks:

type metodenavn(parametre) kaster undtagelsesliste

hvor exception_list er en kommasepareret liste over alle de undtagelser, som en metode kan give.

I et program, hvis der er en chance for at rejse en undtagelse, advarer compileren os altid om det, og vi skal håndtere den afkrydsede undtagelse. Ellers får vi kompileringstidsfejl, der siger, at urapporteret undtagelse XXX skal fanges eller erklæres for at blive kastet. For at forhindre denne kompileringstidsfejl kan vi håndtere undtagelsen på to måder: 

  1. Ved at bruge try catch
  2. Ved at bruge kaster søgeord

Vi kan bruge nøgleordet throws til at uddelegere ansvaret for undtagelseshåndtering til den, der ringer (det kan være en metode eller JVM), så er den, der ringer, ansvarlig for at håndtere denne undtagelse.  

hvordan man finder skjulte ting på Android

Eksempel 1: Ubehandlet undtagelse

Java
class Geeks {  public static void main(String[] args)  {  Thread.sleep(10000);  System.out.println('Hello Geeks');  } } 

Produktion:

error: unreported exception InterruptedException; must be caught or declared to be thrown

Forklaring: I ovenstående program får vi kompileringstidsfejl, fordi der er en chance for undtagelse, hvis hovedtråden går i dvale, får andre tråde chancen for at udføre main()-metoden, hvilket vil forårsage InterruptedException. 

Eksempel 2: Brug af throws at håndtere Undtagelse

Java
class Geeks {  public static void main(String[] args)  throws InterruptedException  {  Thread.sleep(10000);  System.out.println('Hello Geeks');  } } 

Produktion:

Hello Geeks

Forklaring: I ovenstående program håndterede vi ved at bruge nøgleordet throws Afbrudt Undtagelse og vi får output som Hej nørder.

Eksempel 3: At kaste en undtagelse medthrows

Java
class Geeks {  static void fun() throws IllegalAccessException  {  System.out.println('Inside fun(). ');  throw new IllegalAccessException('demo');  }  public static void main(String args[])  {  try {  fun();  }  catch (IllegalAccessException e) {  System.out.println('Caught in main.');  }  } } 

Produktion
Inside fun(). Caught in main. 

Forklaring: Ovenstående eksempel kaster en IllegalAccessException fra en metode og håndterer den i hovedmetoden ved hjælp af en try-catch-blok.

Forskellen mellem kast og kast

De vigtigste forskelle mellem kast og kast i Java er som følger:

kaste

kaster

java liste metoder

Det bruges til eksplicit at kaste en undtagelse.

Det bruges til at erklære, at en metode kan give en eller flere undtagelser.

Det bruges i en metode eller en kodeblok.

Det bruges i metodesignaturen.

Det kan kaste både kontrollerede og umarkerede undtagelser.

Den bruges kun til markerede undtagelser. Umarkerede undtagelser kræver ikke kaster

Metoden eller blokken kaster undtagelsen.

Metodens opkalder er ansvarlig for at håndtere undtagelsen.

Stopper det aktuelle udførelsesflow med det samme.

Det tvinger opkalderen til at håndtere de erklærede undtagelser.

smid ny ArithmeticException('Fejl');

public void myMethod() kaster IOException {}