• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Try Catch Brak rozwiązania

0 głosów
310 wizyt
pytanie zadane 5 maja 2020 w Java przez danielo665 Obywatel (1,040 p.)

Witam ,

mam pewien problem z tym kodem mianowicie

* Metoda bezpiecznieGetElement musi zwracać wartoscDomyslna, jeśli w metodzie pojawią się wyjątki. Obsłuż wyjątki. to jest wskazówka

a to mój kod 

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        ArrayList<Integer> lista = new ArrayList<Integer>();
        for (int i = 0; i < 20; i++) {
            int x = Integer.parseInt(reader.readLine());
            lista.add(x);
        }

        System.out.println(bezpiecznieGetElement(lista, 5, 1));
        System.out.println(bezpiecznieGetElement(lista, 20, 7));
        System.out.println(bezpiecznieGetElement(lista, -5, 9));
    }

    public static int bezpiecznieGetElement(ArrayList<Integer> lista, int indeks, int wartoscDomyslna) {
        
        int zwrot ;
        int liczba;
        try{
           zwrot = lista.get(indeks);
           return zwrot;
        }
        catch(Exception e){
            liczba = lista.get(wartoscDomyslna);
            return liczba;
        }
               
       
    }

}

I własnie wydaje mi sie ze jest okey bo wyjątki zostają przecież zwracane,Tylko nadal pojawia sie własnie bład o tresci (Metoda bezpiecznieGetElement musi zwracać wartoscDomyslna, jeśli w metodzie pojawią się wyjątki. Obsłuż wyjątki.)

 

1 odpowiedź

+1 głos
odpowiedź 5 maja 2020 przez overcq Pasjonat (22,630 p.)
wybrane 5 maja 2020 przez danielo665
 
Najlepsza

Jeśli ma zwracać wartoscDomyslna, to raczej tak

try{
    zwrot = lis­ta.get(indeks);
    re­tu­rn zwrot;
}
ca­tch(Exce­p­tion e){
    li­cz­ba = war­to­s­cDo­my­s­lna;
    re­tu­rn li­cz­ba;
}

 

komentarz 5 maja 2020 przez danielo665 Obywatel (1,040 p.)
Tak masz racje !

Ale dlaczego tak nie rozumiem

Mógłbyś coś więcej powiedzieć
komentarz 5 maja 2020 przez overcq Pasjonat (22,630 p.)

Jeśli wywołasz

Sys­tem.out.prin­tln(be­zpie­cz­nie­Ge­tEle­ment(lis­ta, 20, 7));

to wystąpi wyjątek, bo na liście jest tylko 20 elementów.

Ale... wartoscDomyslna może mieć dowolną wartość, a lista może być dowolna, więc mógłby wystąpić kolejny wyjątek, jeśli chciałbyś odczytać element listy, którego nie ma.

Tym razem ten wyjątek wystąpiłby w bloku catch, więc byłby nie obsłużony.

Podobne pytania

+1 głos
1 odpowiedź 698 wizyt
pytanie zadane 5 maja 2021 w C i C++ przez Mavimix Dyskutant (8,490 p.)
0 głosów
1 odpowiedź 502 wizyt
pytanie zadane 24 marca 2021 w C# przez Xames Nowicjusz (240 p.)
0 głosów
1 odpowiedź 1,194 wizyt
pytanie zadane 16 lutego 2019 w Java przez periedynek Obywatel (1,320 p.)

93,743 zapytań

142,682 odpowiedzi

323,299 komentarzy

63,330 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...