logo

kast og kast i Java

I Java er unntakshåndtering en av de effektive måtene å håndtere kjøretidsfeil slik at den vanlige flyten av applikasjonen kan bevares. Den håndterer kjøretidsfeil som NullPointerException ArrayIndexOutOfBoundsException osv. For å håndtere disse feilene effektivt gir Java to nøkkelord throw og throws.

Java-kast

Nøkkelordet throw i Java brukes til å eksplisitt kaste et unntak fra en metode eller en hvilken som helst kodeblokk. Vi kan kaste enten avmerket eller umerket unntak. Søkeordet throw brukes hovedsakelig til å lage tilpassede unntak. 

Syntaks:



kaste Forekomst

Hvor forekomst er et objekt av typen Throwable (eller dets underklasser som Exception).

Eksempel:

kaste ny ArithmeticException('/ med null');

Men dette unntaket, dvs. forekomsten, må være av typen Kastbar eller en underklasse av Kastbar

Utførelsesflyten av programmet stopper umiddelbart etter at throw-setningen er utført og nærmeste omsluttende prøve blokken sjekkes for å se om den har en fange uttalelse som samsvarer med typen unntak. Hvis den finner en match kontrollert overføres til den setningen ellers neste vedlegg prøve blokken er sjekket og så videre. Hvis ingen samsvarer fange er funnet, vil standard unntaksbehandler stoppe programmet. 

sett java

Eksempel: Dette eksemplet viser hvor et unntak blir fanget opp og kastet på nytt inne 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.');  }  } } 

Produksjon
Caught inside fun(). Caught in main. 

Forklaring: Eksempelet ovenfor viser bruken av nøkkelordet throw for å eksplisitt kaste en NullPointerException. Unntaket er fanget inne i moro() metode og kastes på nytt der den deretter fanges opp i main()-metoden.

Eksempel: Dette eksemplet viser et aritmetisk unntak.

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);  }  } } 

Produksjon:

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

Forklaring: Eksemplet ovenfor demonstrerer et unntak ved å bruke kast der et aritmetisk unntak eksplisitt kastes på grunn av divisjon med null.

Java kaster

kaster er et nøkkelord i Java som brukes i signaturen til en metode for å indikere at denne metoden kan gi et av de oppførte typeunntakene. Den som ringer til disse metodene må håndtere unntaket ved hjelp av en try-catch-blokk. 

Syntaks:

type metodenavn(parametere) kaster unntaksliste

hvor exception_list er en kommaseparert liste over alle unntakene som en metode kan gi.

I et program, hvis det er en sjanse for å gjøre et unntak, advarer kompilatoren oss alltid om det, og vi må håndtere det sjekkede unntaket. Ellers vil vi få kompileringstidsfeil som sier at urapportert unntak XXX må fanges opp eller erklæres for å bli kastet. For å forhindre denne kompileringstidsfeilen kan vi håndtere unntaket på to måter: 

  1. Ved å bruke try catch
  2. Ved å bruke kaster nøkkelord

Vi kan bruke nøkkelordet throws for å delegere ansvaret for unntakshåndtering til den som ringer (det kan være en metode eller JVM), så er innringermetoden ansvarlig for å håndtere det unntaket.  

hvordan finne skjulte ting på Android

Eksempel 1: Ubehandlet unntak

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

Produksjon:

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

Forklaring: I programmet ovenfor får vi kompileringstidsfeil fordi det er en sjanse for unntak hvis hovedtråden går i dvale andre tråder får sjansen til å utføre main()-metoden som vil forårsake InterruptedException. 

Eksempel 2: Bruke throws å håndtere unntak

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

Produksjon:

Hello Geeks

Forklaring: I programmet ovenfor håndterte vi ved å bruke søkeordet throws AvbruttUntak og vi vil få utgangen som Hei Geeks.

Eksempel 3: Kaste et unntak 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.');  }  } } 

Produksjon
Inside fun(). Caught in main. 

Forklaring: Eksempelet ovenfor kaster et IllegalAccessException fra en metode og håndterer det i hovedmetoden ved å bruke en try-catch-blokk.

Forskjellen mellom kast og kast

Hovedforskjellene mellom kast og kast i Java er som følger:

kaste

kaster

java liste metoder

Den brukes til å eksplisitt kaste et unntak.

Den brukes til å erklære at en metode kan gi ett eller flere unntak.

Den brukes i en metode eller en kodeblokk.

Den brukes i metodesignaturen.

Det kan gi både sjekkede og ukontrollerte unntak.

Den brukes kun for sjekkede unntak. Ukontrollerte unntak krever ikke kaster

Metoden eller blokken kaster unntaket.

Metodens innringer er ansvarlig for å håndtere unntaket.

Stopper den nåværende flyten av utførelse umiddelbart.

Det tvinger den som ringer til å håndtere de erklærte unntakene.

kaste ny ArithmeticException('Feil');

public void myMethod() kaster IOException {}