Wie man "Nicht zugewiesene lokale Variable" vermeidet, die in einem try-catch-Block definiert ist

7

Dies ist ein Fehler, dem ich regelmäßig gegenüberstehe. Obwohl ich es auf die eine oder andere Weise umgehen kann, ärgert es mich wirklich. Im folgenden Codefragment möchte ich Ausnahmen von myRequest.GetResponse ()

schützen %Vor%

Wenn ich jetzt versuche, den Code zu kompilieren, heißt es

  

"Verwendung der nicht zugewiesenen lokalen Variablen 'Leser'"

Nun, meine Frage: Wenn die try-Anweisung reibungslos läuft, ohne dass Ausnahmen ausgelöst werden, warum kann der Compiler nicht auf den Wert zugreifen, der dem Leser im try-Block zugewiesen ist?

    
SLearner 08.06.2013, 12:11
quelle

3 Antworten

10

Sie verwenden eine Variable, die in einem try / catch-Block außerhalb dieses Blocks zugewiesen ist. Sie werden den gesamten Code in den try-Block verschieben wollen.

Sie könnten null zuweisen wie @Svexo vorgeschlagen, aber dies wird eine Ausnahme auslösen, sollte der Datenstrom ausfallen.

    
Femaref 08.06.2013, 12:14
quelle
6

Der Compiler sagt use of unassigned variable , weil der Code nach dem try / catch-Block trotzdem ausgeführt wird.

Wenn Sie eine Ausnahme haben, fangen Sie sie ab, dann führen Sie den Code danach aus. Deshalb erhalten Sie diesen Fehler.

Sie können entweder

  • Weisen Sie den lokalen Variablen null zu und testen Sie dann, ob sie null sind, bevor Sie den Rest des Codes ausführen
  • gib die Funktion in deinem catch-Block zurück.
  • oder verschieben Sie den gesamten Code in den try-Block wie vorgeschlagen @Femaref
ppetrov 08.06.2013 12:17
quelle
2
%Vor%

Dies wird die Variablen

zuweisen

Bearbeiten:

Wenn du es so machst, solltest du ein if außerhalb deines try / catch hinzufügen

%Vor%

Beachten Sie in Ihrem Fall, dass es besser ist, alles in den try / catch-Block zu legen

    
Svexo 08.06.2013 12:14
quelle