AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C# try catch Probleme

Ein Thema von Rabenrecht · begonnen am 30. Jun 2017 · letzter Beitrag vom 3. Jul 2017
Antwort Antwort
Rabenrecht

Registriert seit: 9. Dez 2016
79 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

C# try catch Probleme

  Alt 30. Jun 2017, 14:15
Ich stehe da grad etwas aufm Schlauch:

Code:
[...]
SearchResultCollection results = searcher.FindAll();

//dostuff
[...]

results.Dispose();
Um searcher.FindAll(); würde ich gernen nen try catch Block legen, weil da allerhand passieren kann. Ich kriege es aber irgendwie nicht hin, dass ich am Ende noch results.Dispose(); aufrufen kann.
Ist wahrscheinlich ne einfache Sache, aber ich kenne mich in C# noch praktisch gar nicht aus.

Versucht habe ich folgendes:

Code:
try
{
   SearchResultCollection results = searcher.FindAll();

   //dostuff
   [...]
}
catch (Exception ex) //
{
   return ex.Message;
}
finally
{
   results.Dispose();
}
Klappt nicht, weil results nur im try-Block selbst gültig ist.

Code:
SearchResultCollection results;
try
{
   results = searcher.FindAll();

   //dostuff
   [...]
}
catch (Exception ex) //
{
   return ex.Message;
}
finally
{
   results.Dispose();
}
Da gibt's die Meldung "Verwendung der nicht zugewiesenen Variable 'results' "

Aber wenn ich es noch anders anordne, wird results.Dispose(); bei nem Fehlerfall nicht aufgerufen.

Was übersehe ich da?
  Mit Zitat antworten Zitat
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
127 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: C# try catch Probleme

  Alt 30. Jun 2017, 14:33
Du vergisst den Garbage Collector glaub ich

https://msdn.microsoft.com/de-de/library/ms973837.aspx
Thomas
  Mit Zitat antworten Zitat
Wosi

Registriert seit: 29. Aug 2007
59 Beiträge
 
#3

AW: C# try catch Probleme

  Alt 30. Jun 2017, 15:17
Für die Arbeit mit disposable Objekten gibt es das using Pattern:

Code:
using(SearchResultCollection results = searcher.FindAll())
{
  DoStuff(results);
} // <-- Implizieter Aufruf von results.Dispose sobald die Using-Sektion verlassen wird. Kein Try-Finally erforderlich
Mehr Infos gibt es hier: https://docs.microsoft.com/de-de/dot...sing-statement
  Mit Zitat antworten Zitat
wurzelzwerg

Registriert seit: 19. Jun 2011
Ort: Ilmenau
111 Beiträge
 
Delphi XE5 Enterprise
 
#4

AW: C# try catch Probleme

  Alt 30. Jun 2017, 18:58
Zitat:
Zitat:
Da gibt's die Meldung "Verwendung der nicht zugewiesenen Variable 'results' "
Du musst null zuweisen.
Sollte so klappen(alternativ zu using):

Code:
SearchResultCollection results = null;
try
{
   results = searcher.FindAll();

   //dostuff
   [...]
   return results.ToString() // o.ä.
}
catch (Exception ex) //
{
   return ex.Message;
}
finally
{
   if(results != null) results.Dispose();
}

Geändert von wurzelzwerg (30. Jun 2017 um 19:22 Uhr)
  Mit Zitat antworten Zitat
Rabenrecht

Registriert seit: 9. Dez 2016
79 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: C# try catch Probleme

  Alt 3. Jul 2017, 08:12
Danke, das hat funktioniert!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz