Java'da İstisna İşleme [Örneklerle]
Yayınlanan: 2020-11-12İstisnalar, bir programcı tarafından asla arzu edilmeyen, ancak onunla birçok kez uğraşmak zorunda kalan bir programın istenmeyen ve beklenmedik olayıdır. İşin güzel yanı, nesne yönelimli Java diliyle bu istenmeyen olayları 'Java'da İstisna İşleme' adı verilen bir kavram aracılığıyla hafifletmenin mümkün olmasıdır . İstisnayı onarmaz ama onunla başa çıkmak için alternatif bir yol sağlar.
Hatalı veri girişi, donanım arızası, bağlantı arızası, sunucu arızası vb. dahil olmak üzere bir istisnanın ortaya çıkmasının birçok nedeni olabilir. Bu nedenle, istisna işleme, Java öğrenme sürecinde normalin sağlanmasına yardımcı olduğu için her zaman önemlidir ve her zaman önemli olacaktır. Beklenmeyen bir olay meydana geldiğinde bir programın akışı. İstisnaları yok saymak, tüm yazılımın çökmesine ve veri kaybına neden olabilir.
Artık istisnalar ve istisna işleme hakkında bir fikrimiz olduğuna göre, ayrıntılı olarak inceleyelim ve ayrıca Java'nın istisnaları işlemeye nasıl yardımcı olduğunu anlayalım.
Okuyun: İstisna İşleme Mülakat Soruları
İçindekiler
İstisna İşleme Nedir ?
Bir geliştirici, çalışma zamanı sırasında bir kod parçasının atabileceği istisnaları tahmin edebilir. Öğrencilerin çoğunun kararsız kaldığı en önemli şeylerden biri, tüm istisnaların derleme sırasında değil, çalışma zamanında gerçekleşmesidir. Java, istisnaları yalnızca çalışma zamanı sırasında işleyebilir. Bir istisna işleyici bloğu oluşturmak için bir Java programında kullanılan belirli anahtar kelimeler vardır.
Java.lang.Exception , tüm istisna sınıflarının üst sınıfıdır. Exception sınıfı, Object sınıfının bir alt sınıfı olan yerleşik Throwable sınıfının bir alt sınıfıdır . İstisna dışında, Throwable'ın başka bir sınıfı da vardır, yani Hata ve İstisnalar arasındaki temel fark olan Java programları tarafından işlenemeyen program yürütme sırasında anormal bir durum olan Error.

Yukarıdaki şekilde gösterildiği gibi, Java'da başlıca iki İstisna kategorisi vardır. Bir sonraki bölümde, Java'daki istisna türlerine ayrıntılı olarak bakacağız.
Java İstisnaları
İstisnaların temel nedenleri, programcıdan veya bazı nedenlerden dolayı başarısız olan fiziksel kaynaklardan kaynaklananlardır. Bunlara dayanarak, Java'da esas olarak aşağıdaki ayrıntıları takip edilen iki İstisna kategorisi vardır:
- Kontrol edilen istisna
- İşaretlenmemiş istisna
1. Kontrol Edilen İstisna
Kontrol edilen istisnalar, istisnanın programcı tarafından işlenip işlenmediğini izlemek için derleyici tarafından derleme sırasında kontrol edildikleri için 'derleme zamanı istisnaları' olarak bilinir. Sistem daha sonra bir derleme hatası görüntüler.
Bu istisnalara bazı örnekler IOException , Okuyun: Yeni Başlayanlar için Java Projesi Fikirleri
2. İşaretlenmemiş İstisna
Kontrol edilmeyen istisnalar, programın çalışma zamanı sırasında meydana geldikleri için 'Çalışma zamanı istisnaları' olarak adlandırılır. Kontrol edilmeyen istisnalar normalde derleme sırasında yok sayılır ve kontrol edilmez.
Bu istisnalara örnek olarak, mantıksal hatalar gibi bir programdaki hatalar veya bir programcının kontrolünde olmayan ve bir sistem yöneticisinin düzeltmesini gerektiren yanlış API'lerin kullanılması verilebilir.
Kontrol Edilen ve Kontrol Edilmeyen İstisna
Farklılaşan Noktalar | Kontrol Edilen İstisna Denetlenmeyen İstisna taşıma süresi | Kontrol Edilen İstisnalar, derleme sırasında kontrol edilir ve işlenir. | Denetlenmeyen İstisnalar derleme sırasında kontrol edilmez. |
İstisna Tanımlama | Bir yöntem kontrol edilen bir istisna atarsa program bir derleme hatası verir. | Derleyici istisnayı kontrol edemediğinden program iyi derlenir. | |
Miras | RuntimeException sınıfını devralmazlar. | RuntimeException sınıfının alt sınıflarıdır. | |
Geliştiricinin Rolü | Geliştiriciler tarafından işlenebilir. | Geliştiriciler tarafından yönetilemez. |
İstisnaları anlamak, onları ele almadan önce birincil adımdır.
Java, İstisnaları İşleme konusunda nasıl yardımcı olur?
Artık Java örneğinde işaretli ve işaretlenmemiş iki tür istisna olduğunu biliyoruz. Bir metot kontrol edilmiş bir istisna oluşturuyorsa, bir programda derleme hatasından kaçınmak için bir try-catch bloğu ile ele alınmalı veya ' atmalar' anahtar kelimesi bildirilmelidir.
Kontrol Edilen İstisna Örneği:
Bu, 'Java' adlı bir dosyayı okuma programıdır. Kontrol edilen bir istisnanın atıldığı üç yer vardır:
- FileInputStream: FileNotFoundException dosya yolunu ve adını belirtmek için kullanılır .
- read() yöntemi: Dosya içeriğinin okunması IOException'ı atar ;
iii. close() yöntemi: Dosya giriş akışının kapatılması IOException öğesini atar .
java.io'yu içe aktar *;
sınıf Örnek {
public static void main( String args[])
{
FileInputStream fis = boş ;
/*Yapıcı FileInputStream(Dosya dosya adı)
* işaretli bir istisna atar FileNotFoundException */
fis = new FileInputStream ( "B:/java.txt" );
int k;
/* FileInputStream sınıfı atışlarının read() metodu
* işaretli bir istisna: IOException
*/
while (( k = fis.read() ) != – 1 )
{
sistem . dışarı . yazdır (( char )k);
}
/*close() yöntemi dosya giriş akışını kapatır
* IOException'ı atar*/
fis.close();
}
}
Yukarıdaki Programın Çıktısı:
“Main” Java.lang iş parçacığında istisna bulundu . Hata : Çözülmemiş derleme sorunları:
İşlenmeyen istisna FileNotFoundException bulundu
İşlenmeyen özel durum IOException bulundu
İşlenmeyen özel durum IOException bulundu
Bu derleme hatasının nedeni: Bildirilmemesi veya istisnaların ele alınması.
Mutlaka Okuyun: Java GitHub Projeleri
İstisna İşleme Yöntemleri
İstisnaların ele alınabilmesi için aşağıda açıklanan iki yol vardır:
Yöntem 1: 'Atar' istisna anahtar sözcüğünü bildirme
Yukarıdaki programda, kontrol edilen üç istisnanın tümü main() yönteminin içindedir. Bu nedenle, derleme hatasından kaçınmanın bir yolu, 'throws' anahtar sözcüğünü kullanarak yöntemdeki istisnayı bildirmektir. IOException, FileNotFoundException'ın bir üst sınıfı olduğundan, bunu da kapsayacaktır.
Fırlatma anahtar sözcüğünü kullanan Güncellenmiş Program:
java.io'yu içe aktar *;
sınıf Örnek {
public static void main( String args[]) IOException'ı atar
{
FileInputStream fis = boş ;

fis = new FileInputStream ( "B:/java.txt" );
int k;
while (( k = fis.read() ) != – 1 )
{
sistem . dışarı . yazdır (( char )k);
}
fis.close();
}
}
Çıktı:
Dosyanın içeriğini ekranda görüntüleyin.
Yöntem 2: özel durumları try-catch bloklarını kullanarak işleyin.
Bu, yukarıdakine daha gelişmiş bir yaklaşımdır ve en iyi istisna işleme uygulamalarından biridir. Try-catch bloklarını içeren değiştirilen program kodu aşağıdaki gibidir:
java.io'yu içe aktar *;
sınıf Örnek {
public static void main( String args[])
{
FileInputStream fis = boş ;
denemek {
fis = new FileInputStream ( "B:/java.txt" );
} yakalama ( FileNotFoundException fnfe){
sistem . out .println( "Dosya değil " +
“belirtilen yolda mevcut” );
}
int k;
denemek {
while (( k = fis.read() ) != – 1 )
{
sistem . dışarı . yazdır (( char )k);
}
fis.close();
} yakalama ( IOException ioe){
sistem . out .println( "G/Ç hatası " +ioe);
}
}
}
Çıktı:
Bu kod sonunda dosya içeriğini gösterecektir.
Kontrol Edilmeyen İstisna Örneği
Kontrol edilmeyen istisnalar derleme sırasında kontrol edilmez. Program, bildirilmediği veya işlenmediği takdirde derleme hatası vermeyecek ve düzgün çalışacaktır. Geliştiricinin görevi, bu tür istisnalara neden olabilecek koşulları önceden tahmin etmek ve bunları ele almaktır. Tüm Denetlenmeyen istisnalar, RuntimeException sınıfının alt sınıflarıdır.
sınıf Örnek {
public static void main( String args[])
{
int sayı1= 10 ;
int sayı2= 0 ;
/*Herhangi bir sayıyı 0'a bölmek
* ArithmeticException'ı atar
*/
int res=sayı1/sayı2;
sistem . çıktı .println(res);
}
}
Kod, bu kodla başarılı bir şekilde derlenecek, ancak çalışma zamanı sırasında , kontrol edilmeyen istisnalar derleme zamanında kontrol edilmediğinden ArithmeticException'ı atacaktır. Başka bir örneğe bakalım.
sınıf Örnek {
public static void main( String args[])
{
int dizi[] ={ 1 , 2 , 3 , 4 , 5 };
/* Dizide 5 eleman var ama biz
* 8. element değerini göster. fırlatacak
* ArrayIndexOutOfBoundsException
*/
sistem . out .println(dizi[ 7 ]);
}
}
ArrayIndexOutOfBoundsException denetlenmeyen bir istisna olduğu için bu kod da başarıyla derlenecektir .
Burada, Denetlenmeyen İstisnaları işlemek için, kullanıcıya görüntülemek istediği, ancak dizide bulunmayan bir istisna mesajı görüntülenmelidir.
Try-catch bloğu ile yukarıdaki kod istisnasının ele alınması
sınıf Örnek {
public static void main( String args[]) {
dene {
int dizi[] ={ 1 , 2 , 3 , 4 , 5 };
sistem . out .println(dizi[ 7 ]);
}
yakalamak ( ArrayIndexOutOfBoundsException e){
sistem . out .println( "Belirtilen dizin mevcut değil" +
"dizide." );
}
}
}
Çıktı:
Belirtilen dizin dizide mevcut değil .
Not: Farklı istisnaları işlemek için bir try bloğunun içinde birden fazla yakalama bloğu olabilir.
Yöntem 3 : 'nihayet' anahtar sözcüğünü kullanma
Bazen bir istisna meydana gelse bile bir kodun yürütülmesi gerekebilir. Final anahtar sözcüğünün kullanıldığı yer burasıdır . İşte 'nihayet' anahtar kelimesine sahip tipik bir kod.
public int getPlayerScore(String playerFile)
FileNotFoundException'ı atar {
Tarayıcı içeriği = boş;
denemek {
içerik = yeni Tarayıcı( yeni Dosya(playerFile));
dönüş Integer.parseInt(contents.nextLine());
} nihayet {
if (içerik != null ) {
içerik.close();
}
}
}
Burada, son blok, dosyayı okumaya çalışırken Java'nın çalıştırmasını istediğimiz kodu gösterir.
Bir FileNotFoundException oluşturulsa bile , Java nihayet içeriğini arayacaktır .
Kodu aşağıdaki gibi değiştirerek istisnayı halledebiliriz :
public int PlayerScore(String playerRuns) {
Tarayıcı içeriği;
denemek {
içerik = yeni Tarayıcı(yeni Dosya(playerRuns));
dönüş Integer.parseInt(contents.nextLine());
} yakalama (FileNotFoundException noFile ) {
logger.warn(“Dosya bulunamadı.”);
0 döndür;
} nihayet {
denemek {
if (içerik != boş) {
içerik.close();
}
} yakalama (IOException ioexc) {
logger.error(“Okuyucu kapatılamadı.”, ioexc);
}
}

}
Çözüm
Bu makale ile Java'da hata ve istisnaların ve istisna işlemenin temellerini ele almaya çalıştık . Bu kılavuzun size Java'nın sunduğu bu benzersiz özellik hakkında iyi bir fikir vereceğini umuyoruz ve artık istisnaları ele alabilir ve onlardan daha iyi kurtulabilirsiniz. Çözüm
Java, özelden genele doğru istisnaları ele almanın yollarını sunar. Önceden kolayca tahmin edilemeyen istisnalara işlenmeyen istisnalar denir. Tüm istisnaları yakalamak, geliştirme ekibine kodun kalitesi ve hızlı bir şekilde düzeltilebilecek hataların temel nedenleri hakkında görünürlük sağlar.
Java, tam yığın geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, tam yığın Yazılım Geliştirmede upGrad & IIIT-B'nin PG Diplomasına bakın. Profesyoneller için özenle seçilmiştir ve 360 derece kariyer desteği sağlar ve üzerinde çalışılacak canlı projeleri içerir. Kursun sonunda Swiggy, IMDB vb. uygulamalar tasarlayıp oluşturabileceksiniz.
Kulağa heyecan verici gelmiyor mu!