Kompjuters, Programmazzjoni
Java: eċċezzjonijiet u l-immaniġġjar tagħhom
Kwalunkwe programm jaħdem b'mod stabbli biss jekk il-kodiċi tas-sors tiegħu jiġi mxejjen, u m'hemm l-ebda kundizzjoni li tista 'tikkawża sitwazzjonijiet mhux previsti. Il-proċess tal-qbid ta 'fallimenti possibbli jitwettaq fl-istadju ta' l-ipprogrammar. Biex tagħmel dan, l-iżviluppatur iqis ir-riżultati mistennija kollha u jipprova jillimita l-effett tal-iżball sabiex ma jkunx jista 'jkisser il-programm jew iwassal għall-kollass tiegħu.
Meta jista 'jkollok bżonn titratta l-eċċezzjonijiet
F'Java, l-eċċezzjonijiet jistgħu jiġu kkawżati minn input tal-utent mhux korrett, nuqqas tar-riżorsa meħtieġa biex titmexxa l-programm, jew skonnettjar f'daqqa tan-netwerk. Għall-użu komdu tal-applikazzjoni maħluqa mill-iżviluppatur, huwa neċessarju li tiġi kkontrollata l-okkorrenza ta 'sitwazzjonijiet straordinarji. Il-konsumatur m'għandux jistenna li l-programm mdendel ikkompleta x-xogħol tiegħu, jitlef id-dejta bħala riżultat ta 'eċċezzjonijiet mhux immaniġġjati jew sempliċement il-messaġġi li spiss jidhru li xi ħaġa ħarġet ħażin.
Immaniġġjar ta 'Eċċezzjonijiet Java
X'għandu jiġi kkunsidrat? Il-lingwa Java għandha l-funzjonalità ta 'l-immaniġġjar ta' l-eċċezzjoni tagħha. Naturalment, persentaġġ kbir ta 'żbalji jinqabdu fl-istadju tal-kumpilazzjoni, meta s-sistema awtomatikament tirrapporta li ma tistax tintuża aktar. Iżda hemm ukoll tali tip ta 'eċċezzjonijiet li jinqalgħu matul l-operazzjoni tal-programm. L-iżviluppatur għandu jkun jista 'jipprevedi dan u jfassal il-kodiċi b'tali mod li ma jikkawżax żbalji, iżda jittrattah b'mod speċjali jew jgħaddi l-kontroll lil fergħa oħra.
F'Java, tali qbid ta 'eċċezzjonijiet huwa impost mill-kompilatur, hekk huma magħrufa problemi tipiċi u għandhom l-iskema ta' eżekuzzjoni standard tagħhom stess.
Eċċezzjonijiet Tipiċi
L-iktar eżempju sempliċi fejn tista 'tikseb eċċezzjoni hija d-diviżjoni. Minkejja s-sempliċità kollha tagħha, fl-espressjoni, bħala diviżur, jista 'jkun hemm żero, li jwassal għal żball. Ukoll, jekk id-dehra tiegħu tista 'tiġi mbassra qabel u evitata. Iżda din l-għażla mhix dejjem disponibbli, għalhekk huwa meħtieġ li tiġi organizzata l-eċċezzjoni tal-qbid immedjatament meta tinqasam "diviżjoni b'żero".
Fil-Java, il-mekkaniżmu ta 'l-immaniġġjar ta'
- Fil-borġ jinħoloq oġġett ta 'eċċezzjoni, kif ukoll kwalunkwe ieħor;
- Il-kors naturali tal-programm huwa interrott;
- Il-mekkaniżmu ta 'eċċezzjoni jipprova jsib mod alternattiv biex ikompli l-kodiċi;
- Sib il-post ta 'eżekuzzjoni sikura tal-programm fil-maniġer, ix-xogħol jew se jkun restawrat, jew eċċezzjoni tiġi implimentata b'mod speċjali.
L-eħfef eżempju tal-ħolqien ta 'żball jista' jidher bħal dan:
Jekk (a == null)
Neħħi l-Eċċezzjoni ġdida ta 'NullPointer ();
Hawnhekk il-varjabbli a hija kkontrollata għall-inizjalizzazzjoni, jiġifieri. Mhijiex ugwali għar-referenza nulla. Fil-każ li sseħħ din is-sitwazzjoni u hemm bżonn ta 'proċessar speċjali, tinħareġ eċċezzjoni bi tarmi NullPointerException ġdida ().
Xi dettalji dwar keywords
Meta taħdem b'eċċezzjonijiet, ħafna drabi għandek tuża kliem prinċipali Java biex tirreferi għal azzjoni. Hemm ħamsa minnhom f'dan il-lingwa ta 'programmar:
- Ipprova. Din il-kelma prinċipali diġà nqabdet u tfisser li se tkun sezzjoni ta 'kodiċi li tista' tarmi eċċezzjoni. Il-blokka hija limitata għal ċineg kaboċċi {}.
- Qabda. Hija twaħħal it-tip xieraq ta 'eċċezzjoni u tipproċessah kif xieraq.
- Fl-aħħarnett. Dan il-keyword huwa fakultattiv u jservi biex jesegwixxi biċċa kodiċi li hija meħtieġa fi kwalunkwe każ, anke jekk ma tiġi interċettata l-ebda eċċezzjoni. Huwa miżjud immedjatament wara l-blokka ta 'prova.
- Tarmi - jippermettilek li toħloq eċċezzjonijiet Java kullimkien fil-kodiċi.
- Throws hija kelma prinċipali li titqiegħed fil-firma tal-metodu. Dan ifisser li l-kodiċi sussegwenti jista 'jarmi l-eċċezzjoni ta' Java tat-tip speċifikat. Din it-tikketta sservi bħala sinjal għall-iżviluppaturi, dak li għandek bżonn li wieħed iżomm f'moħħu - il-metodu jista 'ma jaħdimx kif mistenni.
Qabda ma 'tipprova
It-tluq fl-eċċezzjoni ta 'Java, naturalment jassumi li se jiġi ttrattat b'mod speċjali. L-aktar mod konvenjenti biex isir dan huwa jekk it-taqsima tal-kodiċi tkun maqsuma fi blokka. Li possibilment fih eċċezzjoni. Meta tesegwixxi tali kodiċi, il-magna virtwali ssib sitwazzjoni mhux mistennija, tifhem li hija fil-blokk kritiku u tittrasferixxi l-kontroll fiż-żona tal-ipproċessar.
F'Java, il-kodiċi huwa mgeżwer fi blokka ta 'prova speċjali, li fiha tista' tinfetaħ eċċezzjoni. Għalhekk, jitqiegħdu f'ħafna sitwazzjonijiet mhux previsti, li se jinqabdu f'post wieħed, mingħajr ma jimtlew tul il-kodiċi.
Il-kodiċi l-aktar tipiku bil-blokka tal-ipproċessar jidher bħal dan:
Ipprova {
Din tiddetermina l-kodiċi li tista 'tarmi eċċezzjoni
} Qabda (Estrazzjoni_1_1 identifikatur_1) {
Hawnhekk l-eċċezzjoni hija pproċessata, skond it-tip u l-kondizzjonijiet tagħha;
} Qabda (Estrazzjoni_type_2 identifier_2) {
Hawnhekk l-eċċezzjoni hija pproċessata, skond it-tip u l-kondizzjonijiet tagħha;
}
Il-keyword tal-qabda tgħarraf li l-kodiċi soġġett għall-kontroll ta 'eċċezzjoni għandu jiġi pproċessat kif deskritt hawn taħt, sakemm jaqbel mat-tip tiegħu. L-identifikatur jista 'jintuża ġewwa l-blokk tal-kodiċi tal-ipproċessar bħala argumenti.
Fl-aħħarnett
Kif deher ċar mill-kapitolu ta 'qabel, qabdiet jaqbdu l-eċċezzjonijiet tal-qbid u jipproċessawhom. Iżda ħafna drabi hemm sitwazzjoni meta xi kodiċi għandu jesegwixxi, irrispettivament minn jekk l-iżbalji nqabdux. Għal dan, l-aħħar kelma prinċipali teżisti. Hija użata biex iżżid il-valuri ta 'għadd varji, fajls mill-qrib jew konnessjonijiet man-netwerk.
F'din it-taqsima, hemm diversi blokki ta 'qbid b'metodi inventati ta' qbid ta 'eċċezzjonijiet. Pereżempju, il-kodiċi li fih probabbilta jiġġenera sitwazzjoni mhux mistennija tat-tip Cold. Imbagħad l-espressjonijiet "Maħbubin fil-kesħa!" U "Huwa xi ħaġa li tkellem dwarhom?" Se jintwerew fil-console. Jiġifieri, l-aħħar blokk jiġi eżegwit fi kwalunkwe każ.
Fil-fatt, hemm mod biex jiġi evitat li ġġedded l-aħħar. Hija relatata mat-terminazzjoni tal-magna virtwali. Skopri kif dan jista 'jsir fuq l-Internet.
It-tarmi keyword
Throw throws eċċezzjoni. Is-sintassi tiegħu tidher qisha dan:
Throw NewException New ();
Hawnhekk, tinħoloq eċċezzjoni ġdida bit-tip NewException (). Bħala tip, tista 'tuża klassijiet diġà inklużi fil-libreriji standard tal-Java u definiti qabel mill-iżviluppatur tal-produzzjoni tiegħek stess.
Kostruzzjoni bħal din hija inkluża fid-deskrizzjoni ta 'kwalunkwe metodu, li s-sejħa tiegħu għandha mbagħad isseħħ fi ħdan il-blokka ta' prova, sabiex tkun tista 'tinterċepixxiha.
Keyword throws
X'għandek tagħmel jekk fil-proċess ta 'żvilupp hemm sitwazzjoni fejn il-metodu jista' jarmi eċċezzjoni, imma ma jistax jimmaniġġjaha b'mod korrett. Biex tagħmel dan, il-firma tal-metodu tispeċifika t-throws tal-kelma u t-tip ta 'eċċezzjoni possibbli.
Din it-tikketta hija tip ta 'indikatur lill-iżviluppaturi tal-klijenti li l-metodu mhux kapaċi jipproċessa l-eċċezzjoni tiegħu stess. Barra minn hekk, jekk it-tip ta 'żball ikun verifikabbli, il-kompilatur speċifikament jispeċifikah.
Ipprova bir-riżorsi
Fil-verżjoni 7 ta 'Java, l-iżviluppaturi inkludew din l-innovazzjoni importanti daqs l-ipproċessar tal-blokka tar-riżorsi.
Ħafna mill-oġġetti maħluqa f'Java, wara l-użu tagħhom, għandhom jingħalqu biex jiffrankaw ir-riżorsi. Preċedentement, kont kont u ttemm każijiet bħal dawn manwalment. Issa għandhom Interface AutoClosable. Tgħin biex tagħlaq awtomatikament oġġetti diġà użati, imqiegħda fil-blokka ta 'prova. Grazzi għal dan l-approċċ, sar iktar konvenjenti li tikteb il-kodiċi, il-leġibbiltà tagħha żdiedet b'mod sinifikanti.
Klassijiet ta 'eċċezzjoni ta' Custom Java
Il-ħallieqa tal-lingwa ta 'programmar deskritta qiesu ħafna aspetti meta ddisinjaw tipi ta' sitwazzjonijiet mhux previsti. Madankollu, il-varjanti kollha tar-riżultat tal-avvenimenti ma jistgħux jiġu evitati, għalhekk f'Java, huwa possibbli li jiġu determinati l-eċċezzjonijiet tagħhom li huma adattati għall-ħtiġijiet ta 'kodiċi speċifiku.
L-eħfef mod biex jinħoloq huwa li jirtu mill-oġġett l-aktar xieraq għall-kuntest.
Hawnhekk intirtet minn Eċċezzjoni, klassi li tintuża biex tiddefinixxi l-eċċezzjonijiet tiegħek stess. Fil MyException hemm żewġ kostrutturi - waħda b'kontumaċja, it-tieni - bl-argument ta 'msg type String.
Imbagħad fil-klassi pubblika FullConstructors, il-metodu f huwa implimentat, li l-firma tiegħu fiha throws MyException. Dan il-kelma prinċipali tfisser li f tista 'tarmi eċċezzjoni ta' Java tat-tip MyException. Barra minn hekk, fil-korp tal-metodu, l-informazzjoni tat-test toħroġ għall-console u l-ġenerazzjoni attwali ta 'MyException, billi tarmi.
It-tieni metodu huwa kemmxejn differenti mill-ewwel wieħed f'dak meta tinħareġ eċċezzjoni, parametru ta 'sekwenza jiġi mgħoddi lilu, li se jkun rifless fil-console meta jinqabad. B'mod prinċipali, tara li f () u g () jitqiegħdu fil-blokka ta 'prova, u l-keyword tal-qabda huwa stabbilit biex jaqbad MyException. Ir-riżultat tal-ipproċessar huwa l-ħruġ tal-messaġġ ta 'żball lill-console:
Għalhekk, kien possibbli li żżid Java eċċezzjonijiet maħluqa minn idejn.
Eċċezzjoni Arkitettura
Bħall-oġġetti kollha f'Java, l-eċċezzjonijiet jintiret ukoll u għandhom struttura ġerarkika. L-għerq tal-iżbalji kollha mormija f'dan il-lingwa ta 'programmar huwa l-klassi java.lang.Throwable. Jirredi żewġ tipi - Żball u Eċċezzjoni.
Żball - jinnotifika dwar żbalji kritiċi u jirrappreżenta eċċezzjonijiet Java mhux immarkati. L-interċettazzjoni u l-ipproċessar ta 'din id-dejta fil-biċċa l-kbira tal-każijiet iseħħu fl-istadju tal-iżvilupp u m'għandux għalfejn jiġi implimentat fil-kodiċi tal-applikazzjoni finali.
Il-klassi l-iktar użata għall-ħolqien u l-analiżi ta 'eċċezzjonijiet hija l-Eċċezzjoni. Li, min-naħa tiegħu, huwa maqsum f'diversi fergħat, inkluża l-Eżenzjoni Runtime. RuntimeException jirreferi għal eċċezzjonijiet ta 'ħin ta' runtime, jiġifieri, dawk li jseħħu waqt li l-programm ikun għaddej. Il-klassijiet kollha li jintirtu minnu mhumiex verifikabbli.
Eċċezzjonijiet komuni
F'eċċezzjonijiet ta 'Java, li l-lista tagħhom hija ppreżentata hawn taħt, tintuża l-aktar spiss, għalhekk ta' min jiddeskrivi lil kull wieħed minnhom f'aktar dettall:
- Eżezzjoni Aritmetika. Dan jinkludi żbalji relatati ma 'operazzjonijiet aritmetiċi. L-iktar eżempju impressjonanti huwa d-diviżjoni b'żero.
- ArrayIndexOutOfBoundsException - aċċess għan-numru ta 'l-element tal-firxa li jeċċedi t-tul totali tiegħu.
- ArrayStoreException - tentattiv biex jiġi assenjat element ta 'firxa ta' tip inkompatibbli.
- ClassCastException huwa attentat biex tinstalla ħażin tip wieħed għall-ieħor.
- IllegaliArgument Eċċezzjoni - l-użu ta 'argument invalidu fis-sejħa tal-metodu.
- NegativeArraySizeException hija eċċezzjoni meta tinħoloq firxa ta 'daqs negattiv.
- Eżerċizzju ta 'NullPointer - użu ħażin ta' referenza nulla.
- NumberFormatException - iseħħ meta s-sekwenza ma tinqelebx għal numru.
- Eżezzjoni ta 'Operazzjoni mhux appoġġjata - l-operazzjoni mhix appoġġjata.
Dawn l-eżempji huma tipi mhux ivverifikati ta 'eċċezzjonijiet Java. U hekk tfittex ivverifikat:
- ClassNotFoundException - klassi mhux misjuba.
- Illegali Għażla ta 'Aċċċessjoni - tillimita l-aċċess għall-klassi.
- Interruzzjoni Eċċezzjoni - interruzzjoni tal-fluss.
- NoSuchFieldException - il-qasam meħtieġ ma jeżistix.
Interpretazzjoni ta 'eċċezzjonijiet
Waqt li tkellem dwar eċċezzjonijiet komuni, ta 'min jinnota li l-interpretazzjoni tagħhom matul l-iżvilupp tista' tkun żbaljata. Sussegwentement, hemm lista żgħira li tispjega f'aktar dettall meta tista 'tinqala' sitwazzjoni mhux prevista.
NullPointerException. L-ewwel darba li sseħħ eċċezzjoni hija li tirreferi għal referenza ta 'oġġett li hija nulla. Dan japplika wkoll għall-metodi tal-istanza żero tal-klassi. Jista 'jinħareġ Eċċezzjoni NullPointer u jekk it-tul tal-firxa jkun ugwali għal null. Evita sitwazzjonijiet bħal dawn billi perjodikament iċċekkja l-oġġetti fuq null.
ArrayIndexOutOfBoundsException. Kwalunkwe programm ma jistax jeżisti mingħajr l-użu ta 'arrays. Għaldaqstant, referenza frekwenti għalihom tista 'twassal għal żbalji. Eċċezzjoni sseħħ meta l-iżviluppatur jipprova jkollu aċċess għal element ta 'array li mhuwiex fil-lista tal-indiċi. Per eżempju, il-valur mitlub huwa ogħla mit-tul jew inqas minn żero. Ħafna drabi jidher bħala riżultat tal-fatt li l-għadd fil-firxa jibda minn żero.
Konklużjonijiet
Eżekuzzjoni li timmaniġġja Java hija għodda qawwija ta 'l-ambjent li tiffaċilita ħafna l-ħidma tal-programmer u tippermettilu li joħloq kodiċi nadif u mingħajr żbalji. L-istatus u r-reputazzjoni tal-kumpanija ta 'l-iżviluppatur jiddependi fuq kif l-applikazzjoni taħdem bla xkiel u stabbli.
Naturalment, fi programmi pjuttost sempliċi, huwa ħafna aktar faċli li wieħed iżomm f'moħħu sitwazzjonijiet freelance. Iżda fi kumplessi awtomatizzati kbar għal diversi mijiet ta 'eluf ta' linji, dan huwa possibbli biss bħala riżultat ta 'debugging u ttestjar fuq medda twila ta' żmien.
Għal eċċezzjonijiet Java, żbalji li jinqalgħu f'xi applikazzjonijiet, il-kumpaniji individwali joffru benefiċċji meta jkunu dilettanti. Speċjalment apprezzati huma dawk li jikkawżaw ksur tal-politika tas-sigurtà tal-kumpless tas-softwer.
Similar articles
Trending Now