2016-07-13 5 views
-1

私はExceptionを捕まえる。キャッチしたエラーを特定する方法は?

これは具体的なエラーであれば何かしたいと思います。私は文字列で簡単に識別できます。

しかし、私はこれを行うためのよりクリーンな方法があるのだろうかと思った。たとえば、例外のために独自のラッパーを作成すると、インデックスが追加されます。

デフォルト例外にはこのようなことがありますか?

エラーをスローする関数は、RemoteWebDriver(セレンオブジェクト)のインスタンスです。しかし、私はそのクラスに特有の答えは必要ありません。

より正確には、私は次のエラーをキャッチします:OpenQA.Selenium.WebDriverException。 しかし、ドライバの作成時にタイムアウトが発生したり、jsファイルが閉じられたりすると、スローされることがあります。彼らはセーブHResultを持っています。

だから私は、あなたが特定の例外をキャッチすることができ

+0

「例外」の特定のサブクラスをキャッチしますか?または特定のメッセージを持つもの? – Blorgbeard

+0

まあ、かなり曖昧です。まず第一にExceptionを捕捉するのではなく、より派生したクラスを好む。それらの中には、より具体的なエラーを識別するための数値エラーコードがあります。基本クラスにもHResultプロパティがあります。コンテキストがなければ... –

+0

「catch(SomeSubClassOfException)」、またはC#6では[例外フィルタ](http://stackoverflow.com/questions/4268223/c-sharp-exception-filter)を使用できます。 – Blorgbeard

答えて

3

...残念ながら文字列をチェックする以外に、それらを区別する方法がわかりませんでした。タイプImportantExceptionの例外がスローされますが、他のすべてのケースで、それはこの例では、何か他のものを(したときにのみときたとえば...

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

このコードは、特定の何かが、それだけで投げる「ん」例外)。

C#6の例外フィルタを使用することもできます。参照:https://stackoverflow.com/a/4268291/1672990

+0

ありがとう、しかし、私は正確に1つの例外をフィルタリングすることなく、文字列をフィルタリングする必要はありませんどのようにそれを行うには? – Cher

+0

@CherrysaHerrimあなたが何を参照しているかわかりません。 –

+0

同じタイプのエラーが少なくとも3つありますが、含まれるメッセージが異なります。今のところ、これを見分けるために私が見つけた唯一の方法です。 – Cher

関連する問題