logo

iemet un iemet Java

Java izņēmumu apstrāde ir viens no efektīvajiem līdzekļiem izpildlaika kļūdu apstrādei, lai varētu saglabāt regulāru lietojumprogrammas plūsmu. Tā apstrādā izpildlaika kļūdas, piemēram, NullPointerException ArrayIndexOutOfBoundsException utt. Lai efektīvi apstrādātu šīs kļūdas, Java nodrošina divus atslēgvārdus: iemet un met.

Java metiens

Atslēgvārdu “mest” Java izmanto, lai skaidri norādītu metodes vai jebkura koda bloka izņēmumu. Mēs varam mest vai nu pārbaudītu, vai neatzīmētu izņēmumu. Izmest atslēgvārdu galvenokārt izmanto, lai izmestu pielāgotus izņēmumus. 

Sintakse:



mest Piemērs

Kur instance ir Throwable tipa objekts (vai tā apakšklases, piemēram, Izņēmums).

Piemērs:

mest jaunu ArithmeticException('/ ar nulli');

Bet šim izņēmumam, t.i., gadījumam ir jābūt tipa Metams vai apakšklase Metams

Programmas izpildes plūsma apstājas uzreiz pēc tam, kad tiek izpildīts metiena paziņojums un tuvākais aplikums mēģināt bloks tiek pārbaudīts, lai redzētu, vai tajā ir a noķert paziņojums, kas atbilst izņēmuma veidam. Ja tā konstatē, ka atbilstība tiek kontrolēta, tiek pārsūtīta uz šo paziņojumu, pretējā gadījumā nākamais pievienojums mēģināt bloks tiek pārbaudīts un tā tālāk. Ja nav atbilstības noķert tiek atrasts, tad noklusējuma izņēmumu apstrādātājs apturēs programmu. 

objektu masīvs java

Piemērs: Šis piemērs parāda, kur izņēmums tiek notverts un izmests no jauna metodes ietvaros.

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

Izvade
Caught inside fun(). Caught in main. 

Paskaidrojums: Iepriekš minētajā piemērā ir parādīts, kā tiek izmantots metiena atslēgvārds, lai skaidri norādītu NullPointerException. Izņēmums ir nozvejotas iekšpusē jautri () metodi un iemet no jauna, kur to pēc tam nozvejo main() metodē.

Piemērs: Šis piemērs parāda aritmētisku izņēmumu.

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

Izvade:

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

Paskaidrojums: Iepriekš minētajā piemērā ir parādīts izņēmums, izmantojot metienu, kur Aritmētiskais izņēmums tiek tieši izmests dalīšanas ar nulli dēļ.

Java metieni

metieni ir Java atslēgvārds, kas tiek izmantots metodes parakstā, lai norādītu, ka šī metode var radīt kādu no uzskaitītajiem veida izņēmumiem. Šo metožu izsaucējam ir jārisina izņēmums, izmantojot try-catch bloku. 

Sintakse:

tips metodes_nosaukums(parametri) izmet izņēmumu_saraksts

kur izņēmumu_saraksts ir ar komatu atdalīts saraksts ar visiem izņēmumiem, ko metode var radīt.

Programmā, ja ir iespēja izvirzīt izņēmumu, kompilators vienmēr mūs par to brīdina, un mums ir jārīkojas ar šo pārbaudīto izņēmumu. Pretējā gadījumā mēs saņemsim kompilēšanas laika kļūdu, sakot, ka nereģistrēts izņēmums XXX ir jānoķer vai jāpaziņo par izmestu. Lai novērstu šo kompilēšanas laika kļūdu, mēs varam rīkoties ar izņēmumu divos veidos: 

  1. Izmantojot mēģiniet noķert
  2. Izmantojot metieni atslēgvārds

Mēs varam izmantot metienu atslēgvārdu, lai deleģētu atbildību par izņēmumu apstrādi zvanītājam (tā var būt metode vai JVM), tad zvanītāja metode ir atbildīga par šī izņēmuma apstrādi.  

1. piemērs: neapstrādāts izņēmums

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

Izvade:

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

Paskaidrojums: Iepriekš minētajā programmā mēs saņemam kompilēšanas laika kļūdu, jo pastāv izņēmuma iespēja, ja galvenais pavediens aizmigs, citi pavedieni saņem iespēju izpildīt main() metodi, kas izraisīs InterruptedException. 

char un int java

2. piemērs: izmantošana throws lai apstrādātu izņēmumu

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

Izvade:

Hello Geeks

Paskaidrojums: Iepriekš minētajā programmā, izmantojot atslēgvārdu throws, mēs apstrādājām PārtrauktsIzņēmums un mēs saņemsim produkciju kā Sveiki Geeks.

3. piemērs: Izņēmuma izmešana arthrows

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

Izvade
Inside fun(). Caught in main. 

Paskaidrojums: Iepriekš minētajā piemērā tiek izmantots nelegālas piekļuves izņēmums no metodes un tā apstrāde galvenajā metodē, izmantojot try-catch bloku.

Atšķirība starp metienu un metienu

Galvenās atšķirības starp metienu un metieniem Java ir šādas:

mest

metieni

To izmanto, lai skaidri norādītu izņēmumu.

To izmanto, lai paziņotu, ka metode var radīt vienu vai vairākus izņēmumus.

To izmanto metodes vai koda bloka iekšpusē.

To izmanto metodes parakstā.

Tas var mest gan pārbaudītus, gan neatzīmētus izņēmumus.

To izmanto tikai pārbaudītiem izņēmumiem. Neatzīmēti izņēmumi nav nepieciešami metieni

lineārā meklēšana java

Metode vai bloks rada izņēmumu.

Metodes izsaucējs ir atbildīgs par izņēmuma apstrādi.

Nekavējoties aptur pašreizējo izpildes plūsmu.

Tas liek zvanītājam rīkoties ar deklarētajiem izņēmumiem.

mest jaunu ArithmeticException('Error');

public void myMethod() izmet IOException {}