私はすべてのメソッドが関連しているので、私が持っているクラスライブラリの各静的メソッドに使用する適切な例外を探しています。静的クラスにInvalidOperationExceptionを使用できますか?
public static void EnterText(string element, string value, PropertyType elementType)
{
if (PropertiesCollection.Driver == null)
{
throw new InvalidOperationException();
}
if (elementType == PropertyType.Id)
{
PropertiesCollection.Driver.FindElement(By.Id(element)).SendKeys(value);
}
else if (elementType == PropertyType.Name)
{
PropertiesCollection.Driver.FindElement(By.Name(element)).SendKeys(value);
}
else //if elementType does not make sense an argument exception is thrown
{
throw new ArgumentException();
}
}
問題は、PropertiesCollection.Driverが初期化されていない場合、メソッドが役に立たないということです。したがって、メソッドが呼び出されたときにnullの場合、例外をスローしたいと思います。私が探しているものに最も近いのは、InvalidOperationExceptionです。しかし、MSDNは、 "オブジェクトの現在の状態に対してメソッド呼び出しが無効な場合にスローされる例外"と述べています。それは静的クラスであるためオブジェクトがないため、これは不適切な例外タイプですか?いいえの場合は、代わりにどの例外をスローする必要がありますか?
さらに、組織の側面では、ドライバがnullであるかどうかをチェックするコードスニペットは、各メソッドの先頭にあるのか、あまりにも重複しているのでしょうか?私が考えることのできる代替案は、チェックの各段階で呼び出され、必要に応じて例外をスローするヘルパーメソッドです。
https://msdn.microsoft.com/en-us/library/system.invalidoperationexception(v=vs.110).aspx – MethodMan
@Zach、それを汗ばませないでください。 InvalidOperationExceptionは問題ありません。 2番目の質問が広すぎる、契約を使用したい、制限付き機能などを提供するプロキシクラスを作成したい場合があります。 –
ありがとう!うん、私は第二の質問に同意する。私はそれがちょうど私が欲しいものに依存すると思う。 – Zach