Apmācībā mēs uzzināsim par dažādām pieejām izņēmumu apstrādei Java ar piemēru palīdzību.
Pēdējā apmācībā mēs uzzinājām par Java izņēmumiem. Mēs zinām, ka izņēmumi nenormāli pārtrauc programmas izpildi.
Tāpēc ir svarīgi rīkoties ar izņēmumiem. Šeit ir saraksts ar dažādām pieejām, kā rīkoties ar Java izņēmumiem.
- mēģiniet … noķert bloku
- beidzot bloķēt
- met un met atslēgvārds
1. Java mēģiniet … noķert bloku
Mēģinājumu noķert bloku izmanto, lai apstrādātu Java izņēmumus. Šeit ir try… catch
bloka sintakse :
try ( // code ) catch(Exception e) ( // code )
Šeit try
bloka iekšpusē esam ievietojuši kodu, kas varētu radīt izņēmumu . Katram try
blokam seko catch
bloks.
Kad rodas izņēmums, to uztver catch
bloks. catch
Bloks nevar izmantot bez try
bloka.
Piemērs: izņēmumu apstrāde, izmantojot try… catch
class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )
Rezultāts
Aritmētiskais izņēmums => / par nulli
Piemērā mēs mēģinām sadalīt skaitli ar 0
. Šis kods rada izņēmumu.
Lai apstrādātu izņēmumu, mēs esam kodu, 5 / 0
iekšpusē try
bloku. Tagad, kad rodas izņēmums, pārējais try
bloka iekšējais kods tiek izlaists.
catch
Bloks nozveju izņēmums un paziņojumi iekšpusē catch blokā tiek izpildīts.
Ja neviens no try
bloka izteikumiem nerada izņēmumu, catch
bloks tiek izlaists.
2. Java beidzot bloķē
Java finally
bloku vienmēr izpilda neatkarīgi no tā, vai ir kāds izņēmums.
finally
Bloks ir pēc izvēles. Katram try
blokam var būt tikai viens finally
bloks.
finally
Bloķēšanas pamata sintakse ir šāda:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Ja rodas izņēmums, finally
bloks tiek izpildīts pēc try… catch
bloka. Pretējā gadījumā tas tiek izpildīts pēc mēģinājuma bloķēšanas. Katram try
blokam var būt tikai viens finally
bloks.
Piemērs: Java izņēmumu apstrāde, izmantojot beidzot bloķēt
class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )
Rezultāts
ArithmeticException => / ar nulli Šis ir pēdējais bloks
Iepriekš minētajā piemērā mēs sadalām skaitli ar 0try
bloka iekšpusē . Šis kods ģenerē ArithmeticException
.
Izņēmumu uztver catch
bloks. Un pēc tam finally
bloķēšana tiek izpildīta.
Piezīme : finally
Bloka izmantošana ir laba prakse . Tas ir tāpēc, ka tajā var iekļaut svarīgus tīrīšanas kodus, piemēram,
- kods, kuru nejauši var izlaist, atgriežoties, turpinot vai salauzt
- aizverot failu vai savienojumu
3. Java metienu un metienu atslēgvārds
Java throw
atslēgvārds tiek izmantots, lai skaidri izteiktu vienu izņēmumu.
Kad mēs esam throw
izņēmums, programmas plūsma pāriet no try
bloka uz catch
bloku.
Piemērs: izņēmumu apstrāde, izmantojot Java mest
class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )
Rezultāts
Izņēmums pavedienā "main" java.lang.ArithmeticException: mēģinājums sadalīt ar 0 vietnē Main.divideByZero (Main.java:5) vietnē Main.main (Main.java:9)
Iepriekš minētajā piemērā, mēs skaidri metot ArithmeticException
izmantojot throw
atslēgvārdu.
Līdzīgi throws
atslēgvārds tiek izmantots, lai paziņotu par izņēmumu veidu, kas varētu rasties metodē. To izmanto metodes deklarācijā.
Piemērs: Java iemet atslēgvārdu
import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate 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); ) ) )
Rezultāts
java.io.FileNotFoundException: test.txt (sistēma nevar atrast norādīto failu)
Kad palaižam šo programmu, ja fails test.txt neeksistē, FileInputStream
met a, FileNotFoundException
kas paplašina IOException
klasi.
findFile()
Metode nosaka, ka IOException
var tikt izmesti. main()
Metode prasa šo metodi un rokturi izņēmumu, ja tas ir izmet.
Ja metode neizskata izņēmumus, throws
klauzulā jānorāda izņēmumu veids, kas tajā var rasties .
Lai uzzinātu vairāk, apmeklējiet Java metienus un metienus.