2016-07-13 6 views
-1

Ich fange Exception.Wie erkenne ich erkannte Fehler?

Ich möchte etwas tun, wenn das ein spezifischer Fehler ist. Ich kann es leicht mit der Schnur identifizieren.

Allerdings habe ich mich gefragt, ob es eine sauberere Möglichkeit gibt, dies zu tun. Wenn ich beispielsweise einen eigenen Wrapper für die Ausnahme erstelle, füge ich einen Index hinzu.

Gibt es so etwas in der Standardausnahme?

Die Funktion, die ich verwende, die Fehler wirft, ist eine Instanz von RemoteWebDriver (Selen-Objekt). Ich brauche jedoch keine spezifische Antwort für diese Klasse.

Um genauer zu sein, erhalte ich den folgenden Fehler: OpenQA.Selenium.WebDriverException. Es kann jedoch ausgelöst werden, wenn beim Erstellen eines Treibers eine Zeitüberschreitung auftritt oder wenn eine js-Datei geschlossen wird. Sie haben die sichere HResult.

So sehe ich keine Möglichkeit, sie anderen zu unterscheiden, als leider zu überprüfen String ...

+0

Möchten Sie eine bestimmte Unterklasse von 'Exception' abfangen? Oder eine mit einer spezifischen Nachricht? – Blorgbeard

+0

Nun, ziemlich vage. Zuallererst fangen Sie keine Exception ein, sondern bevorzugen mehr abgeleitete Klassen. Einige von ihnen haben einen numerischen Fehlercode, um spezifischere Fehler zu unterscheiden. Die Basisklasse hat auch die HResult-Eigenschaft. Ohne mehr Kontext ... –

+0

Sie können 'catch (SomeSubClassOfException)', oder in C# 6 können Sie [Ausnahme Filter] (http://stackoverflow.com/questions/4268223/c-sharp-exception-filter) verwenden. – Blorgbeard

Antwort

3

Sie spezifische Ausnahmen fangen. Zum Beispiel ...

try 
{ 
    //Do things with your RemoteWebDriver... 
} 
catch (ImportantException e) 
{ 
    //Do something important with this specific exception 
} 
catch (Exception e) 
{ 
    throw; 
} 

Dieser Code „bedeutet“ etwas Bestimmtes, wenn und nur dann, wenn eine Ausnahme vom Typ ImportantException geworfen wird, aber in allen anderen Fällen tut es etwas anderes (in diesem Beispiel, es wirft nur die Ausnahme).

Sie können auch Ausnahmefilter ab C# 6 verwenden. Siehe: https://stackoverflow.com/a/4268291/1672990

+0

danke, aber ich mag genau eine Ausnahme zu filtern, ohne die Zeichenfolge zu filtern, nicht sicher, wie es geht? – Cher

+0

@CherrysaHerrim Ich bin mir nicht sicher, auf welche "Zeichenfolge" Sie sich beziehen. –

+0

Ich habe mindestens 3 Fehler des gleichen Typs, aber die enthaltene Nachricht ist anders. Dies ist der einzige Weg, um diese Unterschiede zu erkennen. – Cher