Erandid on ebanormaalsed tingimused tööaja või kompileerimisaja jooksul. on c ++ -s väga oluline mõiste. Selles artiklis tutvustatakse C ++ versioonis erandite käsitlemist koos selle eri tüüpidega.
Järgmisi näpunäiteid käsitletakse selles artiklis,
Alustagem siis
Erandite käsitlemine C ++ keeles
Erandite tüübid
On kahte tüüpi erandeid,
kuidas programmi java lõpetada
Käitusaja erand
See on jooksuajal püütud erand.
Kompileerimisaegne erand
See on kompileerimise ajal püütud erand.
Selle artikliga C ++ tehtud erandite käsitlemise artikli jätkamine
Mis on erandite käsitlemine?
Vead häirivad programmi tavapärast käivitamist. Erandite käsitlemine on väga vajalik ja see on vigade või erandite käsitlemise protsess. See tagab, et erandid ei mõjuta programmi käivitamist, ja tegeleb nendega aeglaselt, põhjustamata programmi täitmisele probleeme.
Erandite käsitlemisel on sellega seotud kolm mõistet,
Proovige
Selles plokis olev kood on nagu proovikood, mis võib põhjustada erandi. See erand on kinni püügiplokist.
Saak
Selle ploki kood käivitatakse, kui prooviplokkide kood loob erandi.
Viska
Seda märksõna kasutatakse erandi tegemiseks, kui see ette tuleb. Erand saadetakse erandite käitlejale.
Süntaks:
Prooviploki sees olev kood käivitatakse. Kui genereeritakse viga, viskab märksõnavise erandi erandkäsitlejale, see tähendab püüdmisploki. Seejärel käivitas blokeerimisplokk koodi, mis on selle plokis sees, käsitledes seega erandit.
Heitkem pilk erandite käsitlemise koodile c ++
Näidiskood
#include nimeruumi standard proovimine {// kood proovimiseks viska & ldquoexception & rdquo} püüd (erand) {// saagi kood} int main () {int x = 1 proov {cout<< 'Try Block: '<Väljund:
Selgitus
See programm näitab erandite käsitlemist. Meil on muutuja x, millele määratakse väärtus 1. Siis on meil prooviploki algus. Selles plokis on meil if-lause tingimusega x<10.
Meie puhul on tingimus tõene, kuna x on üks. Seejärel viskab programm erandi ja juht nihkub blokeerimiseks. Täidame tingimuse saagiosas ja väljume plokist.
saak (...) {maksumus<< 'Default Exceptionn'<Viimasena täidame ülejäänud väited pärast püüdmisblokki ja väljumisprogrammi.
Võib olla mitu püügiaruannet, sõltuvalt võimalike erandite arvust.
Selle artikliga C ++ tehtud erandite käsitlemise artikli jätkamine
Püügiploki tõrge
Mõelge eelmisele programmile, kui viske märksõna viskab x asemel „ABC”, siis ei saa püüdmisfunktsioon sellega hakkama. See näitab viga,
Sel juhul kuvatakse meie võidetud veateade.
Selle lahendamiseks peame selliste probleemide lahendamiseks lisama koodile vaikefunktsiooni.
#include nimeruumi kasutamine st int main () {int x = 1 proovige {cout<< 'Try Block: '<Väljund:
Selgitus:
See kood sarnaneb eelmisega. Ainus muudatus on see, et visatud erand on tüüpi char. Selle tulemusel on meie püüdmisfunktsioon kasutu. Nii oleme lisanud vaikepüügi funktsiooni.
Kui ükski püügilausetest ei sobi, siis käivitatakse vaikepüük.
Mitu püüdmisplokki
Ühes proovimisplokis võib olla mitu püüdmisplokki.
Siin on näide,
#include nimeruumi kasutamine st int test (int a) {try {if (a<0) throw a else throw 'a' }catch(int a){ cout<<'Caught an integer: ' << a<Väljund:
Selgitus:
Ülaltoodud koodis kasutame mitut püügilauset. Meil on funktsiooni test, mis loob erandi. Esimesel katsel on väärtus 10. Kuna 10 on suurem kui null, visatakse täht ‘a’ ja teine tabamisfunktsioon püüab selle kinni.
Teisel juhul on väärtus väiksem kui 0, nii et väärtus -1 visatakse ja see on seotud täisarvu erandiga
Erandite käsitlemine põhi- ja tuletatud klassis:
Kui põhi- ja tuletatud klassi erandid on tabatud, tuleb tuletatud klassi püük teostada enne baasklassi.
Siin on mõned erandid:
std :: erand
loogika_viga
runtime_error
halb_alloc
halb_levi
halb_erand
Sellega jõuame selle blogi lõppu teemal ‘Exception Handling In C ++’. Loodan, et leidsite selle informatiivse ja kasuliku. Olge kursis rohkemate sarnaste teemade õpetustega. Võite vaadata ka meie koolitusprogrammio saate põhjalikke teadmisi jQuery ja selle erinevate rakenduste kohta reaalajas veebikoolituse jaoks, millel on 24-tunnine tugi ja juurdepääs kogu elule.
Kas teil on meile küsimus? Mainige neid selle blogi kommentaaride jaotises ja võtame teiega ühendust.