8. Java HATA yakalama, try-catch-finally!

preview_player
Показать описание
Java try-catch-finally ile exception yakalama.

Bu videoda hata durumunda ne yapacağımızı, try-catch-finally ve try with resources’ı inceleyeceğiz. Öncelikle exception kavramına bakarak, exception örneklerini inceleyeceğiz ve bu exceptionların oluşmaması için önlemler alacağız. Sayı tahmin oyununda kullanıcı kaynaklı oluşabilecek exceptionlara bakarak bunları try-catch ile ele alacağız. Error kavramını bir kaç örnek ile inceleyeceğiz. Son olarak bir süredir uyarı veren scanner satırında değişiklik yaparak, öncellikle finally bloğu kullanarak, sonrasında da try with resources ile uyarıyı gidereceğiz. Videoda anlattıklarımı aşağıya yazıyorum. Anlatılan bilgilerin bir arada olduğu referans kağıdını indirmek isterseniz yukarıda bağlantısını bulabilirsiniz. Sonraki videolarda görüşmek üzere!

00:00 Exception
01:33 Compile error
02:14 Exception örnekleri
08:42 try-catch
13:48 Error
16:37 finally
20:27 try with resources

*Exception* hata bilgisi içen bir objedir. Kod çalışırken bir noktada hata oluşursa exception objesi oluşturulur ve bu runtime sisteme aktarılır. Bu aktarma işlemine *exception throwing* yani istisna fırmatma deniyor. Bir kaç exception örneğine bakarsak:
IndexOutOfBoundsException: Bir arrayin uzunluğundan büyük bir indeksteki elemana erişilmeye çalışırsa atılır.
NullPointerException: Bir obje gereken noktada null bir değere ulaşılırsa atılır.
StringIndexOutOfBoundsException: Bir stringin uzunluğundan büyük bir indeksteki elemana erişilmeye çalışırsa atılır.

Bu tarz exceptionların testler esnasında tespit edilmesi veya kodlama esnasında potansiyel olarak exception oluşabilecek yerlerin belirlenip önlemlerin alınması gerekir.
Bir koddaki hatayı yakalamak için, kodu try-catch içine alabiliriz.

Exceptionlardan farklı olarak Java’da bir de error’lar var. Error ve exception kavramlarının ikisini de Türkçe’da hata olarak duyacaksınızdır ancak bu iki kavram birbirinden farklıdır. JVM bir error oluşturduğunda bu programın toparlayamadığı, ciddi bir durum oluşmuş olması anlamına gelir. Bunlar hafıza yetersizliği, stack taşması, donanımsal hatalar gibi sebeplerden kaynaklanabilir. Bu hatanın kaynağının bulunup çözülmesi gerekir.

*Recursion* bir methodun kendini çağırmasına denir.

*Try-catch-finally*
Sistemsel kaynaklara, veritabanlarına erişirken, işlem bittikten sonra bu kaynakların kapatılması gerek. Aksi halde hafıza sızıntısı veya veritabanında bağlantıların tükenmesi gibi sorunlar ile karşılaşabiliriz. Bu kapatma işlemini kaynak ile işimiz bittiğinde yapmalıyız ancak kaynağa erişme ile kapatma arasında gerçekleşen işlemler esnasında bir hata oluşursa, hata sonrasındaki kod çalıştırılmayacağı için kaynak erişimi kapatılmadan kod catch’e düşebilir.
Bu durumda try-catch in sonuna bir finally bloğunu ekliyor ve kaynağı burda kapatıyoruz. Finally son bir işlem yapmak istediğiniz her try-catch’in sonuna eklenebilir. Finally bloğu, hata atılsa da atılmasa da çalışır.

*Try with resources*

Kaynak kapatma işlemi yaptığımız finally blokları yerine kullanılabilir.
Burda, erişeceğimiz kaynağı try’ın parantezlerinin içinde tanımlıyoruz. Bu tanımlama, işlevsel olarak finallyde yaptığımız null kontrolü ve close işlemlerinin aynısını yapıyor ama kod satırı olarak hem daha az satır kullanmış oluyoruz hem de daha temiz bir görüntü oluşuyor.
Рекомендации по теме
Комментарии
Автор

Hocam oyun oynarken could not create the Java virtual machine hatası alıyorum yardımcı olur musunuz

muslum_gurses_akbas