Java Anahtar Kelime fırlatır ve atar

Bu eğitimde, örnekler yardımıyla istisna işleme için throw ve throws anahtar kelimesini kullanmayı öğreneceğiz.

Java'da, istisnalar iki türe ayrılabilir:

  • : İşaretlenmemiş İstisnalar Onlar derleme zamanında kontrol ama değil çalışma time.For örneğe: ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, altında istisnalar Errorsınıf, vb
  • Kontrol Edilmiş İstisnalar: Derleme zamanında kontrol edilirler. Örneğin IOException, InterruptedExceptionvs.

İşaretlenmiş ve denetlenmemiş istisnalar hakkında ayrıntılı bilgi edinmek için Java İstisnaları'na bakın.

Genellikle, kontrol edilmeyen istisnaları halletmemize gerek yoktur. Bunun nedeni, programlama hataları nedeniyle kontrol edilmeyen istisnaların ortaya çıkmasıdır. Bunlarla uğraşmak yerine bunları düzeltmek iyi bir uygulamadır.

Bu eğitici şimdi throwve kullanılarak kontrol edilen istisnaların nasıl ele alınacağına odaklanacaktır throws.

Java anahtar kelime atar

Biz kullanmak throwsiçindeki oluşabilir istisnalar türünü ilan etmek yöntem bildiriminde anahtar kelime.

Sözdizimi şöyledir:

 accessModifier returnType methodName() throws ExceptionType1, ExceptionType2… ( // code ) 

Yukarıdaki sözdiziminden de görebileceğiniz gibi, throwsbirden çok istisna bildirmek için kullanabiliriz .

Örnek 1: Java, Anahtar Kelime atar

 import java.io.*; class Main ( public static void findFile() throws IOException ( // code that may produce 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); ) ) ) 

Çıktı

 java.io.FileNotFoundException: test.txt (Böyle bir dosya veya dizin yok) 

Bu programı çalıştırdığımızda, eğer dosya test.txtyoksa , sınıfı genişleten FileInputStreambir atar .FileNotFoundExceptionIOException

Bir yöntem istisnaları işlemezse, onun içinde meydana gelebilecek istisnaların türü throwsyan tümcede belirtilmelidir, böylece çağrı yığınında daha yukarıdaki yöntemler bunları işleyebilir veya throwsanahtar kelimeyi kullanarak bunları belirleyebilir .

findFile()Yöntem belirtir IOExceptionatılabilir. main()Yöntem bu yöntemi çağırır ve o atılır eğer istisna işler.

Birden çok istisnai durum

throwsAnahtar kelimeyi kullanarak birden çok istisnayı nasıl atabileceğimiz aşağıda açıklanmıştır .

 import java.io.*; class Main ( public static void findFile() throws NullPointerException, IOException, InvalidClassException ( // code that may produce NullPointerException… … … // code that may produce IOException… … … // code that may produce InvalidClassException… … … ) public static void main(String() args) ( try( findFile(); ) catch(IOException e1)( System.out.println(e1.getMessage()); ) catch(InvalidClassException e2)( System.out.println(e2.getMessage()); ) ) ) 

Burada findFile()yöntem atabilir belirtir NullPointerException, IOExceptionve InvalidClassExceptiononun içinde throwsmaddesi.

Not işlenmiyor biz emin NullPointerException. Bunun nedeni, kontrol edilmeyen bir istisna olmasıdır. Maddede belirtmek throwsve işlemek gerekli değildir .

anahtar kelime Vs. atar. dene… yakala… sonunda

İstisnalara neden olabilecek birkaç yöntem olabilir. try… catchHer yöntem için yazmak sıkıcı olacaktır ve kod uzun ve daha az okunabilir hale gelir.

throws ayrıca, mevcut yönteminizde yakalamak istemediğiniz istisnayı (işlenmesi gereken bir istisna) işaretlediğinizde de kullanışlıdır.

Java atma anahtar sözcüğü

throwAnahtar kelime açıkça tek istisna için kullanılır.

Bir istisna atıldığında, program yürütme akışı trybloktan bloğa aktarılır catch. throwAnahtar kelimeyi bir yöntem içinde kullanırız .

Sözdizimi şöyledir:

 throw throwableObject;

Fırlatılabilir nesne, sınıfın Throwableveya sınıfın alt sınıfının bir örneğidir Throwable.

Örnek 2: Java throw anahtar sözcüğü

 class Main ( public static void divideByZero() ( throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) ) 

Çıktı

 İş parçacığı "ana" java.lang.ArithmeticException: Main.main (Main.java:7) çıkış durumu 1'de Main.divideByZero'da (Main.java:3) 0'a bölmeye çalışılıyor 

Bu örnekte, açıkça bir ArithmeticException.

Not: ArithmeticException kontrol edilmeyen bir istisnadır. Kontrol edilmeyen istisnaları ele almak genellikle gerekli değildir.

Örnek 3: İşaretli istisnayı atma

 import java.io.*; class Main ( public static void findFile() throws IOException ( throw new IOException("File not found"); ) public static void main(String() args) ( try ( findFile(); System.out.println("Rest of code in try block"); ) catch (IOException e) ( System.out.println(e.getMessage()); ) ) ) 

Çıktı

 Dosya bulunamadı 

findFile()Yöntem atar IOExceptionbiz onun kurucusuna aktarılan mesaj ile.

Kontrol edilen bir istisna olduğundan, onu throwscümlecikte belirtmemiz gerektiğini unutmayın .

Bu findFile()yöntemi çağıran yöntemlerin ya bu istisnayı ele alması ya da throwsanahtar kelimeyi kullanarak bunu belirtmesi gerekir .

main()Yöntemde bu istisnayı ele aldık . Bir istisna atıldığında program yürütme akışı trybloktan bloğa aktarılır catch. Böylece, trybloktaki kodun geri kalanı atlanır ve catchbloktaki ifadeler yürütülür.

Ilginç makaleler...