Võrdluskaart
Võrdluse alus | Viga | Erand |
---|---|---|
Põhiline | Süsteemi ressursside puudumise tõttu tekib viga. | Erand on tingitud koodist. |
Taastamine | Viga ei ole taastatav. | Erand on tagastatav. |
Märksõnad | Programmi koodi poolt viga ei ole võimalik käsitseda. | Erandeid käsitletakse kolme märksõnaga "proovida", "püüda" ja "viska". |
Tagajärjed | Kui viga tuvastatakse, lõpetatakse programm ebanormaalselt. | Erandina avastatakse see vastavalt "visata" ja "saagi" märksõnadele. |
Tüübid | Vead liigitatakse kontrollimata tüübiks. | Erandid liigitatakse kontrollitud või kontrollimata tüübiks. |
Pakett | Java puhul on vead defineeritud paketiga "java.lang.Error". | Java puhul on erandid määratletud java.lang.Exception'is. |
Näide | OutOfMemory, StackOverFlow. | Kontrollitud erandid: NoSuchMethod, ClassNotFound. Kontrollimata erandid: NullPointer, IndexOutOfBounds. |
Vea määratlus
“ Error ” on sisseehitatud klassi “Throwable” alamklass. Vead on kriitilised tingimused, mis tekivad süsteemi ressursside puudumise tõttu ja mida ei saa programmi koodiga käsitleda. Vead ei ole mingil moel taastatavad, sest neid ei saa luua, visata, püüda ega vastata. Vead on põhjustatud katastroofilise rikke tõttu, mida teie programm tavaliselt ei suuda.
Vead on alati kontrollimata, kuna kompilaatoril ei ole teadmisi selle esinemise kohta. Rikke ajal ilmnevad alati vead. Viga saab selgitada näite abil, programmil on virnade ülevoolu viga, mälu viga või süsteemikatkestuse viga, selline viga on tingitud süsteemist. Kood ei vastuta selliste vigade eest. Vea esinemise tagajärg on see, et programm lõpetatakse ebanormaalselt.
Erandi määratlus
„Erand“ on ka sisseehitatud klassi “Visatud” alaliik. Erandid on erakorralised tingimused, mis esinevad käitusajal. Enamikel juhtudel on erandite põhjuseks meie programmi kood. Kuid erandeid saab käsitleda ka ise, kuna erandid on tagastatavad. Erandeid käsitletakse kolme märksõnaga „proovige“, „püüda“, „viska”. Erandi kirjutamise süntaks on:
proovige {// kirjutada oma kood siia} Saak (eranditüüp) {// kirjutage siia kood}
Ülaltoodud koodis on prooviplokis kirjutatud kood kood, mida soovite erandiks jälgida. Kui erand ilmneb prooviplokis, visatakse see kasutades märksõna „viska”. Väljapandud erand võib jääda ülaltoodud koodi „saagi“ plokki. „Erandi tüüp” on tekkinud erandi tüüp.
Lihtsate sõnadega võib öelda, et vale koodi tõttu tekkinud vigu nimetatakse eranditeks. Näiteks kui taotletud klassi ei leita või soovitud meetodit ei leitud. Sellised erandid tulenevad programmi koodist; süsteem ei vastuta selliste erandite eest. Erandid on liigitatud „kontrollitud” ja „kontrollimata”. Kontrollimata erandid ei ole kompilaatori teadmised, kuna need esinevad käitustöö ajal, samas kui kompilaatoril on teadmised kontrollitud eranditest, kuna kompilaator on kompileerimise ajal teada.
Põhilised erinevused vead ja erandid
- Viga ilmneb ainult siis, kui süsteemi ressursid on puudulikud, kuid erand tekib siis, kui koodil on mõni probleem.
- Viga ei saa kunagi tagasi saada, samas kui erandit saab taastada, valmistades koodi erandiga tegelemiseks.
- Viga ei saa kunagi käsitseda, kuid erandit saab käsitseda koodiga, kui erandit viskav kood on kirjutatud katse- ja püügiploki sees.
- Vea ilmnemisel lõpetatakse programm ebanormaalselt. Teisest küljest, kui erand tekib, viskab programm välja erandi ja seda kasutatakse proovimise ja püügi ploki abil.
- Vead on kontrollimata, st vead ei ole kompilaatorite teadmised, samas kui erand on klassifitseeritud kontrollimata ja kontrollimata.
- Vead on määratletud java.lang.Error paketis, samas kui erand on määratletud java.lang.Exception.
Järeldus:
Erandiks on programmi kodeerimisel tehtud vigade tulemused ja vead on tingitud süsteemi ebaõigest toimimisest.