Thread: [C#] Rethrow exception
-
12-01-2010, 10:27 #1
[C#] Rethrow exception
Ik ben momenteel aan het experimenteren met c# en ze spreken over het rethrowen van een exception. Nu kan ik hier geen goed voorbeeld van vinden en kan ik me ook niet echt goed voorstellen waarvoor het dient.
Het rethrowen van een exception gebeurd als volgt:
Nu is de vraag wat dit juist doet; want op welke manier ik het ook gebruik, ik blijf fouten krijgen. Iemand die mij hierbij kan helpen?Code:catch (OverflowException e) { throw; }no votes
-
-
12-01-2010, 10:37 #2Member
- Registered
- 11/01/10
- Location
- Kortrijk
- Posts
- 1
- iTrader
- 0
- Mentioned
- 0 Post(s)
Kan je meer van je code tonen?
Als je een rethrow doet van een exception die voorkomt binnen uw try-catch blok is het normaal dat je een fout krijg. Een exception is nu eenmaal een "fout".no votes
-
12-01-2010, 10:40 #3
Om te proberen had ik iets al dit, gewoon om te zien wat het gaf:
Code:static void TryCatchTest() { for (int x = 0; x < 10; x++) { try { testje(x); Console.WriteLine(x.ToString()); } catch (TimeoutException e) { Console.WriteLine("timeout"); } catch (OverflowException e) { throw; } } } static void testje(int getal) { if(getal == 0) { throw new OverflowException(); throw new TimeoutException(); } }no votes
-
12-01-2010, 11:26 #4
Ok bedankt, het is gelukt
no votes
-
12-01-2010, 11:28 #5Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Rethrowen van een exceptie kan bv handig zijn om iets te loggen. In je methode vang je kan de exceptie op, je logt de exceptie en je gooit die verder. Het verder gooien is nodig zodat ook bovenliggende lagen kunnen merken dat er ergens iets fout is gelopen.
“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
14-01-2010, 15:19 #6Platinum Member
- Registered
- 03/08/02
- Location
- the.onion
- Posts
- 10,620
- iTrader
- 35 (97%)
- Mentioned
- 5 Post(s)
- Reputation
- 0/330
Het nut van rethrowen, is dat je call stack intact blijft.
Bij het throwen van een nieuwe exception, vertrek je terug van een lege stack.Hi, my name is Gonzo and I approve this message.
"Gonzo is the puppet master!" - Foxiie /// "Het is nog onduidelijk of en wanneer Gonzo op de markt komt, en tegen welke prijs" - Tweakers
"Koop gewoon een pak smeltkaas. Kost 20 cent voor 10 schellen en smijt da tussen je bicky. wie betaalt er nu 50 cent extra voor een bicky cheese ?" - Nutteloze Micro-optimalisaties voor Gevorderdenno votes
-
14-01-2010, 19:30 #7Member
- Registered
- 08/11/03
- Location
- Antwerpen
- Posts
- 1,726
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 2/2
Inderdaad, er zijn wel wat verschillend tussen:
1) throw ex;
2) throw;
3) throw new Exception(ex);
In het eerste geval blijft je call stack niet intact, wat wel het geval is bij de tweede en de derde regel. Het verschil tussen 2 en 3 is dat je in het laatste geval de exception wrapt in een andere exception.
In de meeste gevallen zal je regel 2 gebruiken.no votes

