🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #659

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

#659
From: Pugi!
Date: Tue, 05 Sep 2006 07:35
79 lines
3986 bytes
Pugi! schreef:

> 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.
>
> thanx,
>
> Pugi!

Bedankt voor de reacties en de link. Met behulp hiervan en de reacties
in engelse newsgroup, plus nog stukje VB.NET help-functie, ben ik tot
volgende code gekomen.

        Dim xmlrdr As XmlTextReader = Nothing
        Try
            'Deze coding zou ook werken zonder de If Not (xmlrdr Is
Nothing)
            'in het Finally-blok, maar zodra hier, voor xmlrdr = New
Xml...
            'coding zou staan die een exception veroorzaakt, zou
xmlrdr.close
            'een exception veroorzaken in het Finally-blok, vandaar de
If Not (...
            xmlrdr = New
XmlTextReader(Me.Server.MapPath("personeel.xml"))
            Do While xmlrdr.Read
            Loop
            lblWellFormed.Text = "Well-Formed"
        Catch ex As XmlException
            lblWellFormed.Text = "XML : " & ex.Message
        Catch ex As Exception
            lblWellFormed.Text = "Andere fout : " & ex.Message
        Finally
            If Not (xmlrdr Is Nothing) Then
                xmlrdr.Close()
            End If
        End Try

Denk dit het is, tenzij er nog suggesties zijn.

Pugi!
Technical Details
Message-ID: <1157441721.895658.4750@i42g2000cwa.googlegroups.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!i42g2000cwa.googlegroups.com!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-7-bit
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!i42g2000cwa.googlegroups.com!not-for-mail
From: "Pugi!" <puginews@gmail.com>
Newsgroups: be.comp.programming,nl.comp.programmeren
Subject: Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Date: 5 Sep 2006 00:35:22 -0700
Organization: http://groups.google.com
Lines: 80
Message-ID: <1157441721.895658.4750@i42g2000cwa.googlegroups.com>
References: <1157379669.503669.211910@i42g2000cwa.googlegroups.com>
NNTP-Posting-Host: 81.246.30.163
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
X-Trace: posting.google.com 1157441727 17396 127.0.0.1 (5 Sep 2006 07:35:27 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Tue, 5 Sep 2006 07:35:27 +0000 (UTC)
In-Reply-To: <1157379669.503669.211910@i42g2000cwa.googlegroups.com>
User-Agent: G2/0.2
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6,gzip(gfe),gzip(gfe)
X-HTTP-Via: 1.0 SERVER2
Complaints-To: groups-abuse@google.com
Injection-Info: i42g2000cwa.googlegroups.com; posting-host=81.246.30.163;
   posting-account=Wn8Dzw0AAADBlmrHDaMaBID43Tq7b6Bl