Article View: be.comp.programming
Article #613Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
From: Martijn Mulder
Date: Mon, 04 Sep 2006 18:27
Date: Mon, 04 Sep 2006 18:27
46 lines
2937 bytes
2937 bytes
> Mijn vraag geldt in feite in het algemeen, maar ik begon er mij vragen
> bij te stellen bij het gebruik van XmlTextReader. Worden resources
> vrijgegeven bij een exception of moet je in een finally blok een .close
> doen ?
> Het voorbeeld uit cursus opleiding XML.NET (VB.NET):
>
> Dim lezer As New
> XmlTextReader(Me.Server.MapPath("personeel.xml"))
> Try
> Do While lezer.Read
> Loop
> lezer.Close()
> lblWellFormed.Text = "Well-Formed"
> Catch ex As XmlException
> lblWellFormed.Text = ex.Message
> End Try
>
> Is oefening om te testen of xml-bestand well-formed is of niet bij het
> sequentieel nodes lezen.
> Indien personeel.xml niet well-formed is => XMLException. De reader
> wordt dan klaarblijkelijk niet gesloten.
> Ik kan natuurlijk op veilig spelen en code vervangen door :
>
> Dim lezer As New
> XmlTextReader(Me.Server.MapPath("personeel.xml"))
> Try
> Do While lezer.Read
> Loop
> lblWellFormed.Text = "Well-Formed"
> Catch ex As XmlException
> lblWellFormed.Text = ex.Message
> Finally
> lezer.Close()
> End Try
>
> Dan wordt de reader gesloten of er nu een exception optreedt of niet.
> Vraag is : 'Is het nodig ?'
> Hoe kan ik dat testen ? Met 'Is Nothing' test je op het bestaan van het
> object en is dus in beide gevallen false.
Hou lezer.Close() in de 'Finally'. In C#, ook een .NET taal, zal het niet
correct de-alloceren van resources ws. niet tot een memory leak leiden,
omdat de de garbage collector de boel opruimt, maar in het kader van
'defensief programmeren' kan je dat maar beter vīŋŊīŋŊr zijn. Het blijft keurige
code, de file wordt op 1 plaats geopend en op 1 plaats gesloten. Houen zo!
Technical Details
Message-ID:
<44fc7017$0$13688$dbd4b001@news.wanadoo.nl>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!feeder.news-service.com!news2.euro.net!postnews2.euro.net!news.wanadoo.nl!not-for-mailReferences:
<1157379669.503669.211910@i42g2000cwa.googlegroups.com>Show Full Headers
Complete Article Headers
X-Google-Thread: fcea4,7165765ea9e31236 X-Google-Thread: 107324,7165765ea9e31236 X-Google-Attributes: gidfcea4,gid107324,public X-Google-Language: DUTCH,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!feeder.news-service.com!news2.euro.net!postnews2.euro.net!news.wanadoo.nl!not-for-mail From: "Martijn Mulder" <i@m> Newsgroups: be.comp.programming,nl.comp.programmeren References: <1157379669.503669.211910@i42g2000cwa.googlegroups.com> Subject: Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ? Date: Mon, 4 Sep 2006 20:27:38 +0200 X-Newsreader: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 X-RFC2646: Format=Flowed; Original Lines: 48 Message-ID: <44fc7017$0$13688$dbd4b001@news.wanadoo.nl> Organization: Wanadoo NNTP-Posting-Date: 04 Sep 2006 18:27:35 GMT NNTP-Posting-Host: s5592b976.adsl.wanadoo.nl X-Trace: 1157394455 dr6.euro.net 13688 85.146.185.118:1760 X-Complaints-To: abuse@wanadoo.nl