Soovitatav, 2024

Toimetaja Valik

Erinevus vea ja erandite vahel Java-s

„Throwable” on Java vigade ja erandite hierarhia aluseks. „Viga” on kriitiline tingimus, mida ei saa programmi koodiga käsitleda. „Erand“ on erakorraline olukord, mida saab programmi koodiga toime tulla. Oluline erinevus vea ja erandi vahel on see, et viga on tingitud süsteemi ressursside puudumisest ja erand tekib teie koodi tõttu. Uurime teisi erinevusi vea ja erandi vahel koos võrdluskaardiga.

Võrdluskaart

Võrdluse alusVigaErand
PõhilineSüsteemi ressursside puudumise tõttu tekib viga.Erand on tingitud koodist.
TaastamineViga ei ole taastatav.Erand on tagastatav.
MärksõnadProgrammi 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üübidVead liigitatakse kontrollimata tüübiks.Erandid liigitatakse kontrollitud või kontrollimata tüübiks.
PakettJava puhul on vead defineeritud paketiga "java.lang.Error".Java puhul on erandid määratletud java.lang.Exception'is.
NäideOutOfMemory, 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

  1. Viga ilmneb ainult siis, kui süsteemi ressursid on puudulikud, kuid erand tekib siis, kui koodil on mõni probleem.
  2. Viga ei saa kunagi tagasi saada, samas kui erandit saab taastada, valmistades koodi erandiga tegelemiseks.
  3. Viga ei saa kunagi käsitseda, kuid erandit saab käsitseda koodiga, kui erandit viskav kood on kirjutatud katse- ja püügiploki sees.
  4. 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.
  5. Vead on kontrollimata, st vead ei ole kompilaatorite teadmised, samas kui erand on klassifitseeritud kontrollimata ja kontrollimata.
  6. 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.

Top