NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:22.4.2016 16:43

Zdarec lidi mám začátečnický dotaz :) Chtěl bych od začátku psát kód aby se dal číst :D Mam jenom dotaz zda vadí že použiji try a catch na celou metodu a ne jen na problematickou část. Viz příklad

public void pocitani(int a, int b) {
try {
 System.out.println(a+b);
 System.out.println(a-b);
 System.out.println(a*b);
 System.out.println(a/b);
} catch(Exception e) {
        System.out.println("Chyba!");
}
}

Vadí takovíto zápis ?

 
Odpovědět
22.4.2016 16:43
Avatar
Hartrik
Tvůrce
Avatar
Odpovídá na Petr Kasnal
Hartrik:22.4.2016 17:39

Jde o to, že potom není vidět co přesně chybu způsobilo. Také není dobré odchytávat tak obecnou výjimku jako je Exception. Někde hlouběji může dojít k významné chybě a tobě se vypíše jen "Chyba!" a budeš si myslet, že to způsobilo např. dělení nulou, místo toho, aby ses dozvěděl čím je to skutečně způsobené a opravil to.

Ale v tomto triviálním případě je to asi jedno.

 
Nahoru Odpovědět
22.4.2016 17:39
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Hartrik
Petr Kasnal:22.4.2016 21:16

Jo jasně děkuju moc a co například tady ?

private void preskoc() {
        Button btn = new Button();
        anchorPane.getChildren().add(btn);
        btn.setOnKeyPressed(new EventHandler<KeyEvent>() {
            public void handle(KeyEvent event) {
                if (event.getCode() == KeyCode.SPACE) {
                    mediaPlayer.stop();
                    Node node;
                    try {
                        node = (Node) FXMLLoader.load(getClass().getResource("Okno.fxml"));
                        anchorPane.getChildren().setAll(node);
                    } catch (IOException e) {
                        System.out.println(e);
                    }
                }
            }
        });
    }
 
Nahoru Odpovědět
22.4.2016 21:16
Avatar
Hartrik
Tvůrce
Avatar
Odpovídá na Petr Kasnal
Hartrik:22.4.2016 21:45

Může být, ale tu výjimku bych zabalil jako UncheckedIOEx­ception a poslal dál.

 
Nahoru Odpovědět
22.4.2016 21:45
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Hartrik
Petr Kasnal:22.4.2016 21:56

To moc nevím co znamená mohl by si mi to prosím vysvětlit ?

 
Nahoru Odpovědět
22.4.2016 21:56
Avatar
Hartrik
Tvůrce
Avatar
Odpovídá na Petr Kasnal
Hartrik:22.4.2016 22:31

Místo toho výpisu dej

throw new UncheckedIOException(e);

Když nemáš jak na výjimku reagovat, tak je lepší ji nechat, než vypisovat do konzole.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
22.4.2016 22:31
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Hartrik
Petr Kasnal:22.4.2016 22:38

Jasný super díky moc :)

 
Nahoru Odpovědět
22.4.2016 22:38
Avatar
Eldan
Člen
Avatar
Eldan:22.4.2016 23:14

Na druhou stranu, pokud děláš věc kterou budeš vypouštět na veřejnost tak se hodí udělat nějaký univerzální Exception handler a dát jeden trycatch na nejvyšší level, ať aplikace místo padání vyhazuje tvojí chybovou hlášku. Vypadá to pro uživatele mnohem přívětivěj.

Nahoru Odpovědět
22.4.2016 23:14
Unobfuscated executable == free source code
Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:22.4.2016 23:17

Jo díky moc super rada :)

 
Nahoru Odpovědět
22.4.2016 23:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.