Merhaba arkadaşlar, bu yazımda Java da Execeptions(İstisnalar) konusunu anlatacağım.
Exception(İstisna) Nedir?
Exception, normal kod akışını bozan programların yürütülmesi sırasında meydana gelen olaylardır. Örnek olarak sıfıra bölme, index dışı dizi erişimi vb.
Exception Çeşitleri Nelerdir?
Exception sınıfları diğer Java sınıfları gibi Object sınıfından türer. Object sınıfının bir alt sınıfı Throwable sınıfıdır. Bu sınıftanda Exception sınıfı türer. Exception iki kısma ayrılır:
- Check Exception
- Uncheck Exception
Check Exception
IDE’nin yazılımcıyı uyardığı exception türüdür. Checked Exceptionlar hepsi derleme zamanında işlenir. Örnek olarak birk kod yazıyoruz ve burada hata çıkması muhtemel ise IDE uyarı verir. Bu hataya Check Exception denir.
Uncheck Exception
IDE’nin yazılımcıya uyarmadığı exception türüdür. RuntimeException sınıfından türetilmiş exception sınıfıdır.
Throw Nedir?
Hata oluşturmak için kullanılır. Yani programın belli bir yerinde Exception oluşturmak istersek kullanılır. Örnek olarak:
throw new IOException (“Hata”);
Throws ?
Eğer bir metotun exception oluşturma olasılığı varsa ve try/catch bloğu kullanılmak istenmiyorsa kullanılır. Örnek olarak:
Public void yazdir() throws Exception {
}
Özel Checked Exception Sınıfı Oluşturmak
Oluşturulacak özel sınıf Exception sınıfını extend etmelidir. Örnek olarak:
1 2 3 4 5 |
public class TestClass extends Exception { public TestClass(String errorMessage) { super(errorMessage); } } |
1 2 3 4 5 6 7 8 9 |
try (Scanner file = new Scanner(new File(fileName))) { if (file.hasNextLine()) return file.nextLine(); } catch (FileNotFoundException e) { if (!isCorrectFileName(fileName)) { throw new TestClass("Hata: " + fileName ); } //... } |
Özel Unchecked Exception Sınıfı Oluşturmak
Oluşturulacak özel sınıf RuntimeException sınıfını extend etmelidir. Örnek olarak:
1 2 3 4 5 |
public class TestClass extends RuntimeException { public TestClass(String errorMessage, Throwable err) { super(errrorMessage,err); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
try (Scanner file = new Scanner(new File(fileName))) { if (file.hasNextLine()) { return file.nextLine(); } else { throw new IllegalArgumentException("Non readable file"); } } catch (FileNotFoundException err) { if (!isCorrectFileName(fileName)) { throw new IncorrectFileNameException( "Incorrect filename : " + fileName , err); } //... } catch(IllegalArgumentException err) { if(!containsExtension(fileName)) { throw new TestClass( "Hata : " + fileName, err); } //... } |
Örnek kodlara buradan erişebilirsiniz.
Bu yazımı burada bitiriyorum. Diğer yazılarımda görüşmek üzere…