Giriş
JVM tarafından fırlatılan error sınıflarından bir tanesidir.
Genellikle sonsuz döngüye giren recursive kodlar bu exception'ın fırlatılmasına sebep olur. Çıktı şuna benzer
Örnek
Elimizde şöyle bir kod olsun. Bu kod StackOverflowError fırlatır.
Elimizde şöyle bir kod olsun. Course sınıfının toString() metodunu çağırınca StackOverflowError alırız.
JVM tarafından fırlatılan error sınıflarından bir tanesidir.
Genellikle sonsuz döngüye giren recursive kodlar bu exception'ın fırlatılmasına sebep olur. Çıktı şuna benzer
Exception in thread "main" java.lang.StackOverflowError
Örnek
Elimizde şöyle bir kod olsun. Bu kod StackOverflowError fırlatır.
public class StackOverflowErrorDemo {
public static void main(String[] args) {
javaKeeper();
}
private static void javaKeeper() {
javaKeeper();
}
}
Elimizde şöyle bir kod olsun. Bu kod StackOverflowError fırlatır.
ArrayList<ArrayList> list = new ArrayList();
list.add(list);
list.hashCode();
Açıklaması şöyle.For each element in the list, this calls hashCode. In your case list has itself as it's sole element. Now this call never ends. The method calls itself recursively and the recursion keeps winding until it encounters the StackOverflowErrorÖrnek
Elimizde şöyle bir kod olsun. Course sınıfının toString() metodunu çağırınca StackOverflowError alırız.
public record Course(String name, Student topper) {}
public record Student(String name, List<Course> enrolled) {}
Açıklaması şöyle.Course#toString needs Student#toString and Student#toString needs Course#toString. So if you try to print Student then all enrolled Course will be printed along. Those Courses needs Student so they will print Student inside. This loop will continue till you get StackOverflow exception.
Hiç yorum yok:
Yorum Gönder