使用try catch为C#中的Var赋值

时间:2013-11-20 18:07:17

标签: c# lambda delegates anonymous-methods

我想在C#中做这样的事情。我认为这可以使用Delegates或Anonymous Methods。我试过但我不能这样做。需要帮忙。

SomeType someVariable = try {
                          return getVariableOfSomeType();
                        } catch { Throw new exception(); }

5 个答案:

答案 0 :(得分:1)

您可以创建一个通用辅助函数:

static T TryCatch<T, E>(Func<T> func, Func<E, T> exception)
  where E : Exception {
  try {
    return func();
  } catch (E ex) {
    return exception(ex);
  }
}

然后你可以这样打电话:

static int Main() {
  int zero = 0;
  return TryCatch<int, DivideByZeroException>(() => 1 / zero, ex => 0);
}

这会在1 / zero TryCatch的上下文中评估try,从而导致评估异常处理程序,它只返回0。

我怀疑这比try中的辅助变量和catch / Main语句更具可读性,但是如果你有这样的情况,那就是你可以做的它

除了ex => 0,您还可以使异常函数抛出其他内容。

答案 1 :(得分:0)

你应该这样做:

SomeType someVariable;
try {
  someVariable = getVariableOfSomeType();
}
catch {
  throw new Exception();
}

答案 2 :(得分:0)

SomeType someVariable = null;

try
{
    someVariable = GetVariableOfSomeType();
}
catch(Exception e)
{
    // Do something with exception

    throw;
}

答案 3 :(得分:0)

你可以试试这个

try 
{
    SomeType someVariable = return getVariableOfSomeType();
} 
catch { throw; }

答案 4 :(得分:0)

SomeType someVariable = null;

try
{
    //try something, if fails it move to catch exception
}
catch(Exception e)
{
    // Do something with exception

    throw;
}