Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:

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. dubna 16:43
Avatar
Hartrik
Redaktor
Avatar
Odpovídá na Petr Kasnal
Hartrik:

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. dubna 17:39
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Hartrik
Petr Kasnal:

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. dubna 21:16
Avatar
Hartrik
Redaktor
Avatar
Odpovídá na Petr Kasnal
Hartrik:

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

 
Nahoru Odpovědět 22. dubna 21:45
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Hartrik
Petr Kasnal:

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

 
Nahoru Odpovědět 22. dubna 21:56
Avatar
Hartrik
Redaktor
Avatar
Odpovídá na Petr Kasnal
Hartrik:

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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 22. dubna 22:31
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Hartrik
Petr Kasnal:

Jasný super díky moc :)

 
Nahoru Odpovědět 22. dubna 22:38
Avatar
Eldan
Člen
Avatar
Eldan:

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. dubna 23:14
Unobfuscated executable == free source code
Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:

Jo díky moc super rada :)

 
Nahoru Odpovědět 22. dubna 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.