Wpis z mikrobloga

#java #programowanie

uczę się Javy :)

1. W klasie szef próbuję złapać wyjątek - czy tam pod catch mam napisać jeszcze raz to co jest w bloku try? (netbeans podpowiada, że brakuje instrukcji return)

2. W klasie bazowej próbuję użyć tej metody podając literę zamiast liczby całkowitej aby wyskoczył wyjątek, ale program nie przechwytuje go tylko wywala błędy - jak złapać ten wyjątek, żeby go obsłużyć?
bylem_zielonko - #java #programowanie 

uczę się Javy :)

1. W klasie szef próbuj...

źródło: comment_v1WoXmFV75HunvpzwEtGMGgq3H6YOt4W.jpg

Pobierz
  • 9
  • Odpowiedz
@bylem_zielonko: Kiedy próbujesz w try dać return, to jak wywali się wyjątek to nie będzie wiedziało co zwrócić - dlatego chce, żebyś po try-catch dodał return.
Dodatkowo zastanów się, czy ta funkcja musi zwracać od razu wartość i czy nie lepiej nadać jej typ zwracany void. Wtedy nie będzie się pytało o brakującego returna.
  • Odpowiedz
@bylem_zielonko: A co do drugiego przypadku, gdzie próbujesz podać literę - nie pozwoli na to kompilator, bo ustawiłeś typ parametru na int - czyli całkowitoliczbowy. Jeżeli chcesz tak bardzo przekazać literę, to zmień go na String, a w kodzie dodaj jeszcze takie coś:

int liczba = Integer.parseInt(kwota);
  • Odpowiedz
@bylem_zielonko: pls programuj po angielsku :P
1) w catch obsługujesz wyjątek na zasadzie
- rozwiązujesz problem i zwracasz domyślą wartość
-rzucasz wyjątek dalej (co jest patologią wszystkich dużych systemów)
2) Java wymaga podawania poprawnych typów więc nie tędy droga...
  • Odpowiedz
@bylem_zielonko: A i jeszcze jedno :D Jak chcesz przekazać literę, to musisz to zrobić między " ".
Zapis taki jaki jest u Ciebie czyli:
Marek.zwiekszPremia(a);
oznacza, że chcesz przekazać zmienną a, a nie literę :)
Np.:

Marek.zwiekszPremia("a");
Tylko tak jak pisałem wcześniej, w tym momencie kompilator nie pozwoli na to, bo oczekuje parametru typu int :)
  • Odpowiedz
@amalius: OK, mniej więcej zrozumiałem gdzie jest błąd - jeszcze muszę trochę poczytać :)

a nie wiesz jak wygenerować tutaj jakiś prosty wyjątek do obsłużenia? bo nie mogę wpaść na żaden pomysł...

dopiero jakbym zmienił metodę aby dzieliła premię i w przypadku wpisania 0 jako jej argument można by przechwycić to jako ArithmeticException, a w przypadku dodawania da się coś zrobić?
  • Odpowiedz