Focus mode
"Exception" ATA sınıftan türeterek kendimize ait hata tipleri oluşturabiliriz.
public class Stu {
private int id;
private String name;
public Stu(int id, String name) {
this.id = id;
this.name = name;
}
public static Stu find(int id) throws StuException {
if (id == 123) {
return new Stu(123, "Mustafa Çetindağ");
} else {
throw new StuException("Öğrenci Bulunamadı");
}
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class StuException extends Exception {
public StuException(String msg) {
super(msg);
}
}
public class Main {
public static void main(String[] args) {
Stu s = null;
try {
s = Stu.find(22);
System.out.println("ID : " + s.getId());
System.out.println("Name : " + s.getName());
} catch (StuException e) {
System.out.println(e.getMessage());
}
}
}
Bir metot yazarken hata fırlatabilecek bir metot çağırıyorsak, ya metodun içerisinde try-catch bloğuyla bu hatayı yakalamalı ya da hata yakalamayı bir üst metoda bırakmalıyız. Fakat bu durumda, çağıran metodun bu hatadan haberdar olabilmesi için metodun hata fırlatabileceğini metodun tanımında belirtmeliyiz. Bunu throws deyimiyle yaparız. Örneğe bakalım:
public class Person
{
private int age;
public void setAge(int age) throws IllegalArgumentException
{
if (age < 0)
{
throw new IllegalArgumentException("Yaş sıfırdan küçük olamaz!");
}
this.age = age;
}
}
Gördüğünüz gibi, setAge() metodunun hata fırlatabilecek bir metot olduğunu throws deyimiyle metot tanımında belirttik. Artık bu metodu çağıran metotlar da bu hatayı yakalamak veya bir üst metoda bırakmak zorundadır.
Java’da bazı ortak hatalar için önceden tanımlanmış hata sınıfları vardır. Bunlardan en çok karşılaşılanları kısaca inceleyelim:
Programs to Accelerate Your Progress in a Software Career
Join our 4-8 month intensive Patika+ bootcamps, start with the fundamentals and gain comprehensive knowledge to kickstart your software career!
You need to enroll in the course to be able to comment!