Thread View: be.comp.programming
19 messages
19 total messages
Started by Pugi!
Mon, 04 Sep 2006 14:21
[VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Pugi!
Date: Mon, 04 Sep 2006 14:21
Date: Mon, 04 Sep 2006 14:21
43 lines
2651 bytes
2651 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.
thanx,
Pugi!
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: 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!
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: John Bokma
Date: Mon, 04 Sep 2006 18:38
Date: Mon, 04 Sep 2006 18:38
27 lines
2138 bytes
2138 bytes
"Pugi!" <puginews@gmail.com> wrote:
> Dan wordt de reader gesloten of er nu een exception optreedt of niet.
> Vraag is : 'Is het nodig ?'
Met veel talen, en hier wellicht ook, zal het object als het uit scope
gaat gesloten worden. Aangezien er al iets mis is, en je dus niet hoeft te
weten of het sluiten mis ging, zou ik niet een expliciete close doen.
Het defensief programmeren argument wat ik in een andere reply las is
precies waarom ik defensief programmeren zo'n vreselijke onzin vind. Ik
bedoel, het sluiten *word* gedaan, waarom je code meer onleesbaar maken.
Het is wat mij betreft net zo'n onzin als na
lblWellFormed.Text = "Well-Formed"
controleren of die string er wel echt in zit (want er kan wel eens een
bitje omgevallen zijn). Of te wel, het is een automatische deur dichtduwen
met de hand.
--
John Bokma
Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Martijn Mulder
Date: Mon, 04 Sep 2006 19:43
Date: Mon, 04 Sep 2006 19:43
35 lines
2503 bytes
2503 bytes
>> Dan wordt de reader gesloten of er nu een exception optreedt of niet. >> Vraag is : 'Is het nodig ?' > Met veel talen, en hier wellicht Hier ga je de fout in, met het woordje 'wellicht'. Toen programmeren nog leuk was, met Microsoft Macro Assembler, schreef ik regelmatig ASSUME NOTHING in mijn code, met hoofdletters, en dat ben ik nooit vergeten. > ook, zal het object als het uit scope > gaat gesloten worden. Aangezien er al iets mis is, en je dus niet hoeft te > weten of het sluiten mis ging, zou ik niet een expliciete close doen. > > Het defensief programmeren argument wat ik in een andere reply las is > precies waarom ik defensief programmeren zo'n vreselijke onzin vind. Ik > bedoel, het sluiten *word* gedaan, waarom je code meer onleesbaar maken. > > Het is wat mij betreft net zo'n onzin als na > > lblWellFormed.Text = "Well-Formed" > > controleren of die string er wel echt in zit (want er kan wel eens een > bitje omgevallen zijn). Of te wel, het is een automatische deur dichtduwen > met de hand. Lees even mee, in Microsoft's .NET Framework Developer's Guide, waar we lezen: "Some resource cleanup, such as closing a file, must always be executed even if an exception is thrown" http://msdn2.microsoft.com/en-us/library/ke0zf0f5.aspx
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: John Bokma
Date: Mon, 04 Sep 2006 20:04
Date: Mon, 04 Sep 2006 20:04
27 lines
2173 bytes
2173 bytes
"Martijn Mulder" <i@m> wrote:
>>> Dan wordt de reader gesloten of er nu een exception optreedt of
>>> niet. Vraag is : 'Is het nodig ?'
>
>
>> Met veel talen, en hier wellicht
>
> Hier ga je de fout in, met het woordje 'wellicht'.
Nee, omdat ik deze taal niet ken, sterker, zie onder :-D.
> Lees even mee, in Microsoft's .NET Framework Developer's Guide, waar
> we lezen: "Some resource cleanup, such as closing a file, must always
> be executed even if an exception is thrown"
Precies, en in dat geval heeft het *NIETS* met defensief programmeren te
maken, en *moet* het gewoon middels een final constructie, en was mijn
voorzichtige wellicht correct ipv aan te nemen dat het wel goed gaat, en
vervolgens over "maar het kan geen kwaad" (defensief) te leuteren :-D.
--
John Bokma
Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Martijn Mulder
Date: Mon, 04 Sep 2006 23:08
Date: Mon, 04 Sep 2006 23:08
4 lines
1464 bytes
1464 bytes
Je doet het v��rkomen of jouw foute antwoord wellicht beter is dan mijn juiste antwoord, je beroept je op onwetendheid om je foute antwoord te vergoeilijken, je legt me woorden in de mond, je zegt dat ik leuter en je schrijft krom nederlands. Wat moeten we hiermee?
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: John Bokma
Date: Mon, 04 Sep 2006 23:24
Date: Mon, 04 Sep 2006 23:24
42 lines
2949 bytes
2949 bytes
"Martijn Mulder" <i@m> wrote:
> Je doet het v��rkomen of jouw foute antwoord wellicht beter is dan
> mijn juiste antwoord, je beroept je op onwetendheid om je foute
> antwoord te vergoeilijken, je legt me woorden in de mond, je zegt dat
> ik leuter en je schrijft krom nederlands. Wat moeten we hiermee?
Quoten ipv op de man spelen met een bijna opzichzelf staande post?
En krom Nederlands, dit is een groep over programmeren, ik zie liever krom
Nederlands, dan kromme code suggesties zoals: doe dit maar, want dat is
defensief.
Anyway:
in sommige talen, als een variabele uit context gaat, dan wordt het object
*direct* vernietigd, en dus (ervoor) de destructor aan geroepen.
Expliciete close nodig? Nee, want dit doet de destructor.
in andere talen, en VB.NET is volgens het artikel wat jij aanhaalde hier
een van, wordt het object *niet* direct vernietigt, en dus blijft het
bestand open staan tot het object door de garbage collector opgepikt
wordt. In zo'n geval is een expliciete close een *MUST* als je niet het
risico wilt lopen dat er te veel bestanden open blijven hangen.
Het er gewoon neerzetten omdat je geen idee hebt welke van de twee opgaat,
maar je gewoon zeker wilt zijn, en dit ook nog eens defensief programmeren
noemen is *fout*.
Mijn 1e reply was rammelde hier en daar, ik had e.e.a. expliciet moeten
uitschrijven, mijn excuses daarvoor. Mijn standpunt m.b.t. defensief
kloten blijft :-D.
--
John Bokma
Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Martijn Mulder
Date: Mon, 04 Sep 2006 23:33
Date: Mon, 04 Sep 2006 23:33
41 lines
3345 bytes
3345 bytes
>> Je doet het v��rkomen of jouw foute antwoord wellicht beter is dan >> mijn juiste antwoord, je beroept je op onwetendheid om je foute >> antwoord te vergoeilijken, je legt me woorden in de mond, je zegt dat >> ik leuter en je schrijft krom nederlands. Wat moeten we hiermee? > > Quoten ipv op de man spelen met een bijna opzichzelf staande post? > En krom Nederlands, dit is een groep over programmeren, ik zie liever krom > Nederlands, dan kromme code suggesties zoals: doe dit maar, want dat is > defensief. > > Anyway: > > > in sommige talen, als een variabele uit context gaat, dan wordt het object > *direct* vernietigd, en dus (ervoor) de destructor aan geroepen. > > Expliciete close nodig? Nee, want dit doet de destructor. > > > in andere talen, en VB.NET is volgens het artikel wat jij aanhaalde hier > een van, wordt het object *niet* direct vernietigt, en dus blijft het > bestand open staan tot het object door de garbage collector opgepikt > wordt. In zo'n geval is een expliciete close een *MUST* als je niet het > risico wilt lopen dat er te veel bestanden open blijven hangen. > > > Het er gewoon neerzetten omdat je geen idee hebt welke van de twee opgaat, > maar je gewoon zeker wilt zijn, en dit ook nog eens defensief programmeren > noemen is *fout*. > > Mijn 1e reply was rammelde hier en daar, ik had e.e.a. expliciet moeten > uitschrijven, mijn excuses daarvoor. Mijn standpunt m.b.t. defensief > kloten blijft :-D. Ik schrijf de OP dat hij met 'Finally' de resources op de juiste manier de-alloceert, dat het niet - of het onjuist de-alloceren van resources in de .NET omgeving mogelijk geen schadelijke gevolgen heeft maar dat dat geen reden is om van de voorgeschreven methode af te wijken. En als een afterthought geef ik hem mee dat je met defensief programmeren meer kans hebt goed te gokken, ook als je geen idee hebt waar het over gaat.
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Pugi!
Date: Tue, 05 Sep 2006 07:35
Date: Tue, 05 Sep 2006 07:35
79 lines
3986 bytes
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!
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Martijn Mulder
Date: Tue, 05 Sep 2006 08:11
Date: Tue, 05 Sep 2006 08:11
82 lines
4372 bytes
4372 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.
> 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 (...
Dit is niet de plaats om je zorgen te maken over exceptions in een ander
deel van je code. De exception handler die je schrijft voor andere delen van
je code zorgt er juist voor dat je dit soort kritieke stukken nooit bereikt.
Als het programma tot hier komt kan je veilig aannemen dat de 'New' op de
volgende regel doet wat je ervan verwacht
> 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
De if Not (...) Then ... End If kan je veilig weglaten: If Close() has
already been called, no action is performed.
http://msdn2.microsoft.com/en-us/library/system.xml.xmltextreader.close.aspx
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Steven Spits
Date: Wed, 06 Sep 2006 07:29
Date: Wed, 06 Sep 2006 07:29
14 lines
1786 bytes
1786 bytes
"Martijn Mulder" schreef: > De if Not (...) Then ... End If kan je veilig weglaten: If Close() has > already been called, no action is performed. Heb je de code wel gelezen? Hij had in z'n comments de reden staan. Als het "xmlrdr = New XmlTextReader()" stukje faalt (bv file bestaat niet), dan komt-ie in de finally block waarbij "xmlrdr" null is. Met jou code zal je een "Reference not set to an instance of an object" krijgen. Steven - - -
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Martijn Mulder
Date: Wed, 06 Sep 2006 08:41
Date: Wed, 06 Sep 2006 08:41
17 lines
1698 bytes
1698 bytes
>> De if Not (...) Then ... End If kan je veilig weglaten: If Close() has
>> already been called, no action is performed.
> Heb je de code wel gelezen? Hij had in z'n comments de reden staan.
>
> Als het "xmlrdr = New XmlTextReader()" stukje faalt (bv file bestaat
> niet), dan komt-ie in de finally block waarbij "xmlrdr" null is. Met jou
> code zal je een "Reference not set to an instance of an object" krijgen.
Je hebt gelijk.
If Not (xmlrdr Is Nothing)
xmlrdr.Close()
End If
moet erbij
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Dr.Ruud
Date: Wed, 06 Sep 2006 11:22
Date: Wed, 06 Sep 2006 11:22
29 lines
2119 bytes
2119 bytes
Martijn Mulder schreef: > [attribution dammit] Steven: >> [attribution dammit] Martijn: >>> De if Not (...) Then ... End If kan je veilig weglaten: If Close() >>> has already been called, no action is performed. >> >> Heb je de code wel gelezen? Hij had in z'n comments de reden staan. >> >> Als het "xmlrdr = New XmlTextReader()" stukje faalt (bv file bestaat >> niet), dan komt-ie in de finally block waarbij "xmlrdr" null is. Met >> jou code zal je een "Reference not set to an instance of an object" >> krijgen. > > Je hebt gelijk. > > If Not (xmlrdr Is Nothing) > xmlrdr.Close() > End If > > moet erbij Ik kan me nog steeds niet voorstellen dat de Close niet al automatisch gebeurt, en wel direct bij het out-of-scope raken van xmlrdr. -- Affijn, Ruud "Gewoon is een tijger."
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Martijn Mulder
Date: Wed, 06 Sep 2006 11:41
Date: Wed, 06 Sep 2006 11:41
61 lines
3428 bytes
3428 bytes
Hoi Puigi, hier een voorbeeldje van het correct gebruik van de XMLTextReader
class, van de msdn site van Microsoft. Volgens mij zit jij er niet ver
naast.
http://msdn2.microsoft.com/en-us/library/1af7xa52.aspx
The following example reads an XML file and displays each of the nodes.
Option Strict
Option Explicit
Imports System
Imports System.IO
Imports System.Xml
'Reads an XML document
Public Class Sample
Private Const filename As String = "items.xml"
Public Shared Sub Main()
Dim reader As XmlTextReader = Nothing
Try
' Load the reader with the data file and ignore all white space
nodes.
reader = New XmlTextReader(filename)
reader.WhitespaceHandling = WhitespaceHandling.None
' Parse the file and display each of the nodes.
While reader.Read()
Select Case reader.NodeType
Case XmlNodeType.Element
Console.Write("<{0}>", reader.Name)
Case XmlNodeType.Text
Console.Write(reader.Value)
Case XmlNodeType.CDATA
Console.Write("<![CDATA[{0}]]>", reader.Value)
Case XmlNodeType.ProcessingInstruction
Console.Write("<?{0} {1}?>", reader.Name,
reader.Value)
Case XmlNodeType.Comment
Console.Write("<!--{0}-->", reader.Value)
Case XmlNodeType.XmlDeclaration
Console.Write("<?xml version='1.0'?>")
Case XmlNodeType.Document
Case XmlNodeType.DocumentType
Console.Write("<!DOCTYPE {0} [{1}]", reader.Name,
reader.Value)
Case XmlNodeType.EntityReference
Console.Write(reader.Name)
Case XmlNodeType.EndElement
Console.Write("</{0}>", reader.Name)
End Select
End While
Finally
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub 'Main
End Class 'Sample
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: John Bokma
Date: Wed, 06 Sep 2006 19:01
Date: Wed, 06 Sep 2006 19:01
12 lines
1671 bytes
1671 bytes
"Dr.Ruud" <rvtol+news@isolution.nl> wrote:
> Ik kan me nog steeds niet voorstellen dat de Close niet al automatisch
> gebeurt, en wel direct bij het out-of-scope raken van xmlrdr.
Als ik mij het heeeel goed herinner is dat bij Java *niet* het geval.
--
John Bokma
Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Dr.Ruud
Date: Wed, 06 Sep 2006 20:23
Date: Wed, 06 Sep 2006 20:23
15 lines
1677 bytes
1677 bytes
John Bokma schreef: > Dr.Ruud: >> Ik kan me nog steeds niet voorstellen dat de Close niet al >> automatisch gebeurt, en wel direct bij het out-of-scope raken van >> xmlrdr. > > Als ik mij het heeeel goed herinner is dat bij Java *niet* het geval. Dan zal .Net dat daar wel van overgenomen hebben. <g> -- Affijn, Ruud "Gewoon is een tijger."
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: John Bokma
Date: Wed, 06 Sep 2006 22:24
Date: Wed, 06 Sep 2006 22:24
20 lines
1881 bytes
1881 bytes
"Dr.Ruud" <rvtol+news@isolution.nl> wrote:
> John Bokma schreef:
>> Dr.Ruud:
>
>>> Ik kan me nog steeds niet voorstellen dat de Close niet al
>>> automatisch gebeurt, en wel direct bij het out-of-scope raken van
>>> xmlrdr.
>>
>> Als ik mij het heeeel goed herinner is dat bij Java *niet* het geval.
>
> Dan zal .Net dat daar wel van overgenomen hebben. <g>
Kan heel goed :-)
--
John Bokma
Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Stefan Arentz
Date: Thu, 07 Sep 2006 06:38
Date: Thu, 07 Sep 2006 06:38
15 lines
1751 bytes
1751 bytes
John Bokma <john@castleamber.com> writes: > "Dr.Ruud" <rvtol+news@isolution.nl> wrote: > > > Ik kan me nog steeds niet voorstellen dat de Close niet al automatisch > > gebeurt, en wel direct bij het out-of-scope raken van xmlrdr. > > Als ik mij het heeeel goed herinner is dat bij Java *niet* het geval. Dat klopt. Finalizers zijn onvoorspelbaar en implementatie afhankelijk. Als je totale controle wil dan kan je het beste zelf close() aanroepen. Mogelijk is dat op .Net net zo, maar zeker weten doe ik dat niet :-) S.
Re: [VB.NET] worden objecten gesloten (resources vrijgegeven) na exception ?
Author: Stefan Arentz
Date: Thu, 07 Sep 2006 06:43
Date: Thu, 07 Sep 2006 06:43
39 lines
2798 bytes
2798 bytes
Stefan Arentz <stefan.arentz@gmail.com> writes: > John Bokma <john@castleamber.com> writes: > > > "Dr.Ruud" <rvtol+news@isolution.nl> wrote: > > > > > Ik kan me nog steeds niet voorstellen dat de Close niet al automatisch > > > gebeurt, en wel direct bij het out-of-scope raken van xmlrdr. > > > > Als ik mij het heeeel goed herinner is dat bij Java *niet* het geval. > > Dat klopt. Finalizers zijn onvoorspelbaar en implementatie > afhankelijk. Voor de duidelijkheid: een finalizer is dus niet een finally block maar een finalize() methode op een object :-) En: http://msdn.microsoft.com/msdnmag/issues/1100/gci/ To get a resource to clean up properly, the developer must write code that knows how to properly clean up a resource. In the .NET Framework, the developer writes this code in a Close, Dispose, or Finalize method, which I'll describe later. However, as you'll see later, the garbage collector can determine when to call this method automatically. Also, many types represent resources that do not require any cleanup. For example, a Rectangle resource can be completely cleaned up simply by destroying the left, right, width, and height fields maintained in the type's memory. On the other hand, a type that represents a file resource or a network connection resource will require the execution of some explicit clean up code when the resource is to be destroyed. Zelfde idee als in Java dus. En het was toch VB.NET waar de OP mee bezig was? S.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads