2016-06-23 5 views
1

Also habe ich eine akademische Software schreibe, wo ich muss die Daten aus einem Netzwerk von 8 Geräten über Online-Verbindungen zu erhalten. Beachten Sie, dass diese Geräte so konfiguriert sind, dass sie manchmal keine oder Null-Daten zurückgeben. Und ich muss diese Daten für eine lange Zeit sammeln. Hier ist der Code:Nach Exception

public static void ParseJsonStatic(string link, ...9) 
{ 
    /access the URLs in a suitable interval and process data 
    var client = new WebClient(); 
    var stream = client.OpenRead(link); 
    Debug.Assert(stream != null, "stream != null"); 
    var reader = new StreamReader(stream); 
    var rootObject = JsonConvert.DeserializeObject<RootObject>(reader.ReadToEnd()); 

    .... 
} 

Also, wenn es eine null stream ist, Visual Studio wird angehalten und zeigen mir die Ausnahme Blase und ich muss diese Taste weiter klicken.

enter image description here

Gibt es eine Möglichkeit, dies zu umgehen und sicherstellen, dass mein Code von Anfang läuft weiter, wenn eine solche Situation eintritt. Also, was ich will, ist dies:

while (stream == null) { ... retry to read stream and don't trigger nullPointerException... } 

Weil in Mitte pausieren Sammlung meine Zwecke der Daten nicht auf bestimmten Intervall basiert und auch ich kann es nicht unbeaufsichtigt lassen, als solche für lange Intervalle.

Danke.

+1

nicht sicher, was Sie wollen. Etwas wie "while (stream == null) {... versuche den Stream zu lesen ...}"? Oder vielleicht "if (stream == null) {return}"? – fafl

+0

Ich will etwas, während '(Strom == null) {... wiederholen Stream lesen ...}' und nicht brechen. –

+1

Sie können eine Ausnahme nicht ausschalten. Wie Ihr Computer Ihnen etwas sagt, ist schiefgelaufen. Was können Sie tun, ist es zu fangen und schreibt etwas, das die Ausnahme behandelt (dh löst eine Wiederholung durch die ganze Sache in einer Schleife platzieren und den Escape-Faktor auf false) –

Antwort

3

Versuchen Sie folgendes:

var stream = null; 
while (stream == null) { 
    stream = client.OpenRead(link) 
} 

Vielleicht zwischen liest man auch für einige Zeit warten möchten.

2

In Visual Studio: Strg + Alt + E oder Debug> Ausnahmen.

Dies öffnet ein Fenster, in dem Sie auswählen können, welche Erwartungen der Debugger zu brechen verursachen.

Die, die Sie sind Interessent in wahrscheinlich

Beachten Sie, dass alle nicht behandelten Ausnahmen unter „Common Language Runtime Ausnahmen“ sein, die Ihre Anwendung verursachen würde noch zum Absturz Debuggen brechen. Sie müssen sicherstellen, dass die Ausnahme mit einem Try/Catch behandelt wird.

+0

Vielen Dank dafür. –

0

Gehen Sie auf das Debug-Menü und dann die Ausnahmen

dieses Fenster in das Debug-Menü geht Für den Zugriff auf und Windows wählen -> Exception-Einstellungen.

Wählen Sie Hinzufügen und geben Sie Ihre Ausnahme ein. Dies fügt ein Kontrollkästchen für Ihre Ausnahme hinzu.

Immer wenn diese Ausnahme ausgelöst wird, wird Ihr Debugger angehalten, wenn dieses Kontrollkästchen aktiviert ist. In Ihrer Situation muss dieses Kontrollkästchen deaktiviert sein.

Siehe diese link auf msdn für weitere Informationen!