Windows käsurida
Igale arvutile on töötamiseks paigaldatud operatsioonisüsteem (näiteks MS...
Kõik me teeme vigu ja programmeerimises pole see üldse häbiasi. Vigu tuleb õppida mõistma. Kasutades näiteks Eclipse IDE programmi, siis antakse mõndadest teada juba trükkimise ajal, teised programmi kompileerimisel ja kolmandad kui töötavale programmile “ei meeldi” sisestatud andmed. Pärast veateate saamist algab vea otsimine, mida nimetatakse silumiseks (debugging). Kirjutamata reegel on see, et ühe vea parandamisel tekib kolm uut juurde :)
Javas tekkinud vead võiks põhimõtteliselt jagada kaheks:
Siia alla kuuluvad vead, mida Java kompilaator ei suuda muuta masinkeelde. Näiteks trükivead, kus sisestad meetodi nime valesti, teed süntaksi vea – unustades semikooloni lisamata, algväärtustamata muutujad jms. Eclipse annab sellest mitmes kohas teada ning kui hiirega üle liikuda, siis reeglina pakutakse ka lahendust. Enne vigade parandamist ei lubata koodi kompileerida.
Need vead tekivad programmi töötamise ajal ja katkestavad programmi edasise töötamise. Näiteks üritad nulliga jagada, küsid massiivist elementi mida pole, soov avada faili mida pole jms. Eclipse kuvab veateate konsoolis.
Eeltoodud näidet nulliga jagamisel tekkinud viga nimetatakse erindiks (exception). Ehk tegemist on pigem tõrkega, mida saab ennetada ning programmi töö saab jätkuda. Kasutame selleks try…catch plokki:
1 2 3 4 5 6 7 8 9 10 11 12 | public class ylesanne7 { public static void main(String[] args) { try { int s = 3/0; //võib tekitada probleeme System.out.println(s); //kui probleeme ei tekkinud, siis kuvatakse vastus } catch (Exception e) { System.out.println("Nulliga ei saa jagada"); //vastus erindile } System.out.println("Programmi töö jätkub"); } } |
Praegu püüab me erind kõik vead ja väljastab kõigile ühesuguse veateate. Kui sa tead, milline võib olla viga, siis saab seda ka täpsustada. Ja kui väga vaja, siis saad üldise veateate lõppu lisada ehk lisame näitesse näiteks kaks catch plokki
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class ylesanne7 { public static void main(String[] args) { try { int s = 3/0; System.out.println(s); } catch (ArithmeticException e) { System.out.println(e); } catch (Exception e) { throw e; } System.out.println("Programmi töö jätkub"); } } |
Esimesel juhul kasutasin erindi nime väljatrükkimist ja teisel puhul võtmesõna throw, mis kuvab täispika erindi teate.