🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #613

Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?

#613
From: Martijn Mulder
Date: Mon, 04 Sep 2006 18:27
46 lines
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-mail
References: <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