Первый пример верен, если вы просто собираетесь перехватить исключение и ничего не делать, а вернуть с ним false.
Вы можете изменить TrySomething так, как показано ниже.
public bool TrySomething(string a, out result, bool throwException)
{
try
{
// Whatever
}
catch
{
if(throwException)
{
throw;
}
else
{
return false;
}
}
}
public bool TrySomething(string a, out result)
{
return TrySomething(a, out result, false);
}
Так что DoSomething будет выглядеть как
public int DoSomething(string a)
{
int result;
// This will throw the execption or
// change to false to not, or don't use the overloaded one.
TrySomething(a, out result, true)
return result;
}
Если вы не хотите, чтобы TrySomething с throwException был открыт для общего доступа, вы можете сделать его закрытым.
Исключения могут дорого обойтись, и вы можете выполнить некоторую проверку RegEx для строки, чтобы предотвратить ее выброс. Это зависит от того, что вы пытаетесь сделать.