Verskil tussen gekontroleerde uitsondering en looptyd-uitsondering

Verskil tussen gekontroleerde uitsondering en looptyd-uitsondering
Verskil tussen gekontroleerde uitsondering en looptyd-uitsondering

Video: Verskil tussen gekontroleerde uitsondering en looptyd-uitsondering

Video: Verskil tussen gekontroleerde uitsondering en looptyd-uitsondering
Video: Beweging: Afstand, snelheid en versnelling 2024, November
Anonim

Gekontroleerde uitsondering vs looptyduitsondering

Uitsonderings is spesiale tipe gebeurtenisse wat die normale programvloei kan versteur. Die naam uitsondering kom van "uitsonderlike gebeurtenis". Om 'n uitsondering te gooi is die proses om 'n uitsonderingsvoorwerp te skep en dit aan die looptydstelsel oor te gee. Wanneer die looptydstelsel die uitsonderingsvoorwerp ontvang, sal dit probeer om iemand te vind om dit binne die oproepstapel te hanteer deur dit in die omgekeerde volgorde (waarin die metodes geroep is) te loop. Die looptydstelsel is suksesvol as dit 'n metode met 'n uitsonderingshanteerder vind. Uitsonderingshanteerder is 'n kodeblok wat die genoemde uitsondering amptelik kan hanteer. As die looptydstelsel 'n toepaslike hanteerder vind, sal dit die uitsonderingsvoorwerp aan die hanteerder deurgee. Dit word genoem om die uitsondering te vang. Indien die uitsondering egter nie hanteer kan word nie, sal die program beëindig word. In Java erf uitsonderings van Throwable-klas. Gemerkte uitsonderings is uitsonderings waarop hantering deur die samesteller afgedwing word. Looptyd-uitsonderings is 'n tipe uitsonderings wat nie deur die samesteller nagegaan word nie.

Wat is 'n gekontroleerde uitsondering?

Gemerk Uitsonderings is óf voorwerpe van die klas java.lang.exception óf sy subklasse (behalwe die java.lang. RuntimeException en sy subklasse). Gemerkte uitsonderings word tydens samestelling tyd "gekontroleer". Dit beteken dat die programmeerder hierdie uitsonderings moet vang of gooi, of anders sal die samestelling kla (wat 'n samestellerfout veroorsaak). As gevolg van hierdie rede is baie gekontroleerde uitsonderings baie goed bekend aan programmeerders. Byvoorbeeld, die IOException en sy subklasse is gekontroleerde uitsonderings, en wanneer die programmeerder te doen het met toegang tot of wysiging van 'n lêer, kontroleer die samesteller om seker te maak dat alle moontlike IOExceptions deur die programmeerder versorg word.

Wat is 'n Looptyd-uitsondering?

Runtime Exceptions bestaan uit java.lang. RuntimeException en al sy subklasse. Teoreties gesproke dien hulle dieselfde doel as gekontroleerde uitsonderings, en kan gegooi of hanteer word soos gekontroleerde uitsondering, maar die hantering daarvan word nie deur die samesteller afgedwing nie. Daarom behoort Runtime-uitsonderings aan die familie van ongemerkte uitsonderings. NullPointerException, NumberFormatEception, ClassCastException en ArrayIndexOutOfBoundsException is algemene runtime-uitsonderings in Java.

Wat is die verskil tussen gekontroleerde uitsondering en looptyd-uitsondering?

Alhoewel beide gekontroleerde uitsonderings en looptyd-uitsonderings ongewenste voorkoms is tydens die uitvoering van 'n program, het hulle hul verskille. Gekontroleerde uitsonderingshantering word deur die samesteller afgedwing, maar runtime-uitsonderings is nie. Gemerkte uitsonderings moet dus gegooi of hanteer word sodat die kode kan saamstel, maar daar is nie so 'n vereiste met betrekking tot runtime-uitsonderings nie. Gevolglik behoort looptyd-uitsonderings aan ongemerkte uitsonderingskategorie saam met foute.

Nadeel met gemerkte uitsonderings is dat die programmeerder dit moet hanteer, selfs al weet sy nie hoe om nie. Dus, as die programmeerder net 'n nuwe uitsondering gooi sonder om die oorspronklike te verpak, sal die stapelspoor wat aan die oorspronklike uitsondering behoort, verlore gaan. Dit is waar runtime-uitsonderings handig te pas kom. Omdat alle runtime-uitsonderings op 'n enkele plek hanteer kan word, kan programmeerders dus minder hoeveelheid kode skryf. Aan die ander kant, aangesien gemerkte uitsonderings gevang moet word, is daar geen verrassing vir die programmeerder nie. Sy sal altyd weet watter gekontroleerde uitsondering deur 'n sekere metode gegooi kan word. In teenstelling hiermee kan verskeie looptyd-uitsonderings gegooi word sonder die medewete van die programmeerder.

Aanbeveel: