При реализации / использовании методов, которые возвращают или работают с экземплярами объектов, какой самый элегантный подход для проверки параметров функции?
Способ вызова:
someType GetSomething(object x)
{
if (x == null) {
return;
}
//
// Code...
//
}
или лучше:
someType GetSomething(object x)
{
if (x == null) {
throw new ArgumentNullException("x");
}
//
// Code...
//
}
Способ вызова:
void SomeOtherMethod()
{
someType myType = GetSomething(someObject);
if (someType == null) {
return;
}
}
или лучше:
void SomeOtherMethod()
{
try {
someType myType = GetSomething(someObject);
} catch (ArgumentNullException) {
}
}
При просмотре похожих вопросов причина не использовать try / catch - производительность. Но ИМХО трик-трюк выглядит лучше:).
Итак, какой путь более "изящен"?