CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Exception handling - Wikipedia

Exception handling

Exception handling is een programmeertaal constructie of computer hardware mechanisme, ontworpen om problemen (excepties) af te vangen die voorkomen tijdens de uitvoering van software.

In het algemeen wordt de huidige toestand opgeslagen, en een van te voren bepaalde subroutine wordt uitgevoerd. Afhankelijk van de situatie, kan de programma uitvoering hierna worden voortgezet of helemaal afgebroken.

Vanuit software gezien, is er een grote overeenkomst met hardware interrupts, met uitzondering van het feit dat interrupts gewoonlijk niet gerelateerd zijn aan de huidige programma uitvoering.

Inhoud

[bewerk] Voorbeelden van excepties

Excepties kunnen optreden bij

  • lees- of schrijf-fouten naar de harddisk
  • Bij schrijven naar of lezen uit geheugen, dat niet bij het programma hoort
  • Bij delen door nul
  • en nog vele anderen

Maar veel programmeertalen hebben ook de mogelijkheid om zelf excepties te definieren

[bewerk] Doel van de excepties

Excepties zijn bedoeld om ons een praktisch mechanisme te geven om fout en uitzonderings situaties af te vangen die in software kan voorkomen. Zo kunnen op een hoger niveau fouten worden afgevangen die op een lager niveau worden gedetecteerd, zonder dat in de tussenliggende niveaus hier speciale code voor hoeft te worden toegevoegd.

[bewerk] Exceptie veiligheid

Een stuk software wordt Exceptie veilig (exception-safe) genoemd als run-time fouten binnen de code niet leiden tot geheugen lekken, verminkte data of onjuiste uitvoer. Er zijn een aantal niveaus van exceptie veiligheid:

  1. fout transparant, alle stappen van het programma slagen altijd, en voldoet aan alle eisen zelfs in aanwezigheid van uitzonderlijke situaties. (best)
  2. vastleg of terugschroef techniek, enkele stappen van het programma kunnen ontbreken, maar de ontbroken stappen hebben geen bijeffecten.
  3. basis exceptie veiligheid, de ontbroken stappen kunnen bijwerkingen veroorzaken, maar de juiste toestand wordt bewaard (dus alle opgeslagen informatie is correct).
  4. minimale exceptie veiligheid, gedeeltelijke uitvoering van het programma kan onjuiste data opleveren, maar zal geen crash veroorzaken.
  5. geen exceptie veiligheid, geen enkele garantie kan worden gegeven. (minst)

Normaal is een basis exceptie veiligheid vereist. Fout transparantie is moeilijk, zo niet onmogelijk te implementeren

[bewerk] Exceptie ondersteuning in programmeertalen

Vele programmeertalen zoals onder meer Ada, C++, C#, Common Lisp, Objective C, D, Delphi Eiffel, Java, Php, Python, hebben ondersteuning voor excepties en exception handling. In deze talen wordt bij het optreden van een exceptie de stack afgewikkeld (unwind) totdat een exception handler voor deze exceptie is gevonden.

[bewerk] C#

public static void Main()
{
   try
   {
      // Code die een exceptie kan opleveren
   }
   catch(System.Exception)
   {
      //Verwerk een systeem exceptie.
   }
   catch
   {
      //Verwerk een andere exceptie.
   }
   finally
   {
      // (optioneel) code die altijd uitgevoerd wordt
   }
}

[bewerk] C++

#include <exception>

int main() {
   try {
      // Code die een exceptie kan opleveren
   }
   catch (const std::exception& e) {
      //Verwerk een standaard exceptie.
   }
   catch (...) {
        // onbekende exceptie
   }
}

[bewerk] Java

try {
      // Code die een exceptie kan opleveren
} catch (VoorbeeldExceptie ee) {
      //Verwerk een VoorbeeldExceptie
} catch (Exception b) {
   // Verwerk de overige excepties
} finally {
      // (optioneel) code die altijd uitgevoerd wordt
}

[bewerk] Python

try:
   f = file("aFileName")
except EnvironmentError:
   print "Unable to open file"
else:
   try:
       f.write(could_make_error())
   finally:
       f.close()

[bewerk] Php

try {
      // Code die een exceptie kan opleveren
} catch (ExceptieClass $exceptie) {
      //Verwerk een ExceptieClass exceptie
}

[bewerk] Delphi

try
  try
      // Code die een exceptie kan opleveren
  except
    on E:Exception do
      //Verwerk een Exceptie
  end;
finally
  // Code which will be executed whether or not an exception is raised (e.g. clean-up code)
end;

 
Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com