Entwickler-Ecke

C# - Die Sprache - Internetseite nicht vorhanden ->WebException nicht behandelt


Dariusz - So 10.01.10 21:17
Titel: Internetseite nicht vorhanden ->WebException nicht behandelt
Moin!

Ich wollte in Visual C# 2008 Express eine Methode schreiben, die eine Internetseite aufruft und als String abspeichert, falls es sie gibt, andernfalls sollte der Wert ,,NULL'' zurückgegeben werden.

Dazu hatte ich folgenden Code geschrieben:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
        private static string GetWebPage(string page)
        {
            string data;
            try
            {
                HttpWebRequest site = (HttpWebRequest)WebRequest.Create(page);
                HttpWebResponse response = (HttpWebResponse)site.GetResponse();
                Stream dataStream = response.GetResponseStream();
                StreamReader read = new StreamReader(dataStream);
                data = read.ReadToEnd();
            }
            catch(System.Net.WebException)
            {
                data = "NULL";
                throw;
            }
            return data;
        }


Doch bei einer nicht vorhandenen Internetseite spuckt Visual Studio folgende Fehlemldung aus und beendet das Debugging.

Zitat:
System.Net.WebException wurde nicht behandelt.
Message="Der Remotename konnte nicht aufgelöst werden: '###############'"
Source="System"
StackTrace:
bei System.Net.HttpWebRequest.GetResponse()
bei RL_Prüfer.Program.GetWebPage(String page) in C:\Users\Dariusz\Documents\Visual Studio 2008\Projects\RL-Prüfer\RL-Prüfer\Program.cs:Zeile 67.
bei RL_Prüfer.Program.Main(String[] args) in C:\Users\Dariusz\Documents\Visual Studio 2008\Projects\RL-Prüfer\RL-Prüfer\Program.cs:Zeile 36.
bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart()
InnerException:


Irgendeine Idee wo der Fehler liegt?
Danke!
Dariusz


Flitzs - So 10.01.10 22:30

Hi,

dadurch, dass du mit dem throw; im catch-block die Exception an den nächsthöheren Handler weitergibst, wird die Exception trotzdem von der Runtime behandelt.

mfg Flitzs

EDIT: Weiteres findest du hier: http://msdn.microsoft.com/de-de/library/0yd65esw%28VS.80%29.aspx


Dariusz - So 10.01.10 23:17

Besten Dank! Es funktioniert! *freu*