Citat:
Ursprungligen postat av
JohannesSnajdare
kasta en exception som fångas i den yttersta loopen och som startar om allt
Tycker dock att exception som betyder undantag ska verkligen vara ett undantag,
alltså något exceptionellt har hänt.
Och i de flesta fall innebär att programmet termineras direkt.
Om man hoppar tillbaks till de tidiga specs för C++ så var en exception något som är betydligt mera användbart än C 's globala variabel errno.
En exception ska i C++ bland annat göra viss uppstädning, dvs deallokera lokala variabler,
och "unwinda" scopet för en del andra variabler,
plus till exempel att anropa destruktorerna för allokerade objekt mm.
Errno i C hade alltså den typiska nackdelen att man inte kunde städa upp efter sig ordentligt.
Vilket för vissa program kunde bli problematiskt genom att filer inte stängdes korrekt eller tex redirection av filerna inte fungerade. Till exempel stdin , stdout, stdprn, stddbg med flera...
En exception är inget som hör till normal programbyggnad. Man brukar istället om man har flera loopar inne i varandra använda olika flaggor, tex en flagga för varje loop. En flagga är en bool och
som är antingen false eller true.
TS syntax är fel, man skriver inte
while i=deposit:
utan
while (i == deposit)