Zadanie 1
Napisz metodę, które jako parametr będzie przyjmowała napis i wypisywała na standardowe wyjście jego długość.
- wywołaj tą metodę i zobacz jaki wyjątek został zgłoszony.
- Otocz wywołanie metody blokiem try-catch, przechwyć ten wyjątek i wypisz na standardowe wyjście ślad stosu wywołań z chwili zgłoszenia wyjątku.
- Bezpośrednio po wypisaniu jego śladu zgłoś obsługiwany wyjątek ponownie.
- Czy ślady stosu wypisane przez ciebie w bloku catch i przez maszynę wirtualną w chwili przerwania programu są takie same?
- Przed zgłoszeniem ponownie obsługiwanego wyjątku wykonaj na nim metodę fillInStackTrace().
- Zamiast zgłaszać ponownie obsługiwany wyjątek zgłoś nowy wyjątek klasy Exception. Zauważ, że wymaga to pewnej dodatkowej zmiany w kodzie.
- Dołącz obsługiwany wyjątek do nowo tworzonego wyjątku Exception jako przyczynę jego powstania.
Rozwiązanie (część 1)
public class Zad1 {
void wypiszDługość(String s) {
System.out.println(s.length());
}
public static void main(String[] args) {
Zad1 z = new Zad1();
z.wypiszDługość(null);
}
}
Rozwiązanie (część 2)
public class Zad1 {
void wypiszDługość(String s) {
System.out.println(s.length());
}
public static void main(String[] args) {
try {
Zad1 z = new Zad1();
z.wypiszDługość(null);
} catch (NullPointerException w) {
w.printStackTrace(System.out);
}
}
}
Rozwiązanie (część 3)
public class Zad1 {
void wypiszDługość(String s) {
System.out.println(s.length());
}
public static void main(String[] args) {
try {
Zad1 z = new Zad1();
z.wypiszDługość(null);
} catch (NullPointerException w) {
w.printStackTrace(System.out);
throw w;
}
}
}
Rozwiązanie (część 5)
public class Zad1 {
void wypiszDługość(String s) {
System.out.println(s.length());
}
public static void main(String[] args) {
try {
Zad1 z = new Zad1();
z.wypiszDługość(null);
} catch (NullPointerException w) {
w.printStackTrace(System.out);
w.fillInStackTrace();
throw w;
}
}
}
Rozwiązanie (część 6)
public class Zad1 {
void wypiszDługość(String s) {
System.out.println(s.length());
}
public static void main(String[] args) throws Exception {
try {
Zad1 z = new Zad1();
z.wypiszDługość(null);
} catch (NullPointerException w) {
w.printStackTrace(System.out);
throw new Exception();
}
}
}
Rozwiązanie (część 7)
public class Zad1 {
void wypiszDługość(String s) {
System.out.println(s.length());
}
public static void main(String[] args) throws Exception {
try {
Zad1 z = new Zad1();
z.wypiszDługość(null);
} catch (NullPointerException w) {
throw new Exception(w);
}
}
}