Erinevus kontrollitud erandi ja käitusaja erandi vahel

Erinevus kontrollitud erandi ja käitusaja erandi vahel
Erinevus kontrollitud erandi ja käitusaja erandi vahel

Video: Erinevus kontrollitud erandi ja käitusaja erandi vahel

Video: Erinevus kontrollitud erandi ja käitusaja erandi vahel
Video: Liikumine ja kiirus | 8.klass (Füüsika) 2024, Juuli
Anonim

Kontrollitud erand vs käitusaegne erand

Erandid on eritüüpi sündmused, mis võivad häirida tavapärast saatevoogu. Nime erand pärineb "erakorralisest sündmusest". Erandi loomine on erandiobjekti loomise ja selle käitussüsteemile üleandmise protsess. Kui käitusaegne süsteem võtab vastu erandiobjekti, proovib see leida kedagi, kes seda kõnepakist käsitleks, läbides selle vastupidises järjekorras (milles meetodid kutsuti). Käitusaegne süsteem on edukas, kui see leiab erandikäsitlejaga meetodi. Erandi töötleja on koodiplokk, mis saab nimetatud erandit ametlikult käsitleda. Kui käitusaegne süsteem leiab sobiva töötleja, edastab see erandiobjekti käitlejale. Seda nimetatakse erandi tabamiseks. Kui aga erandit ei saa käsitleda, siis programm lõpetatakse. Javas pärivad erandid klassist Throwable. Kontrollitud erandid on erandid, mille käitlemise jõustab kompilaator. Käitusaja erandid on teatud tüüpi erandid, mida kompilaator ei kontrolli.

Mis on kontrollitud erand?

Checked Exceptions on kas klassi java.lang.exception või selle alamklasside objektid (välja arvatud java.lang. RuntimeException ja selle alamklassid). Kontrollitud erandid "kontrollitakse" kompileerimise ajal. See tähendab, et programmeerija peab need erandid kinni püüdma või viskama, vastasel juhul kaebab kompilaator (põhjustab kompilaatori tõrke). Seetõttu on paljud kontrollitud erandid programmeerijatele väga hästi teada. Näiteks IOException ja selle alamklassid on kontrollitud erandid ja alati, kui programmeerija tegeleb failile juurdepääsu või faili muutmisega, kontrollib kompilaator veendumaks, et programmeerija hoolitseb kõigi võimalike IOerandite eest.

Mis on käitusaja erand?

Runtime Exceptions koosnevad failist java.lang. RuntimeException ja kõigist selle alamklassidest. Teoreetiliselt täidavad need sama eesmärki kui kontrollitud erandid ja neid saab visata või käsitleda nagu kontrollitud erandeid, kuid nende käsitlemist kompilaator ei jõusta. Seetõttu kuuluvad käitusaja erandid kontrollimata erandite perekonda. NullPointerException, NumberFormatEception, ClassCastException ja ArrayIndexOutOfBoundsException on Java tavalised käitusaja erandid.

Mis vahe on kontrollitud erandil ja käitusaja erandil?

Kuigi nii kontrollitud erandid kui ka käitusaja erandid on programmi täitmise ajal soovimatud esinemised, on neil oma erinevused. Kontrollitud erandite käsitlemise jõustab kompilaator, kuid käitusaegseid erandeid mitte. Seetõttu tuleb koodi kompileerimiseks välja visata või käsitleda kontrollitud erandeid, kuid käitusaja erandite puhul sellist nõuet ei ole. Järelikult kuuluvad käitusaja erandid koos vigadega märkimata erandite kategooriasse.

Miinuseks kontrollitud eranditega on see, et programmeerija peab sellega hakkama saama isegi siis, kui ta ei tea, kuidas. Seega, kui programmeerija teeb lihts alt uue erandi ilma originaali pakkimata, läheb algsele erandile kuuluv pinu jälg kaotsi. Siin tulevad kasuks käitusaja erandid. Kuna kõiki käitusaja erandeid saab käsitleda ühes kohas, saavad programmeerijad kirjutada vähem koodi. Teisest küljest, kuna kontrollitud erandid tuleb kinni püüda, pole programmeerija jaoks üllatust. Ta teab alati, millise kontrollitud erandi võib teatud meetodil teha. Vastupidiselt sellele võib programmeerija teadmata teha mitmesuguseid käitusaja erandeid.

Soovitan: