C#中使用try catch给Var赋值

问题描述 投票:0回答:6

我想在 C# 中做这样的事情。我认为使用委托或匿名方法可以实现这一点。我尝试过,但我做不到。需要帮忙。

SomeType someVariable = try {
                          return getVariableOfSomeType();
                        } catch { Throw new exception(); }
c# lambda delegates anonymous-methods
6个回答
2
投票

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

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
之外,你还可以让异常函数抛出其他东西。


0
投票

你应该做这样的事情:

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

0
投票
SomeType someVariable = null;

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

    throw;
}

0
投票

你可以试试这个

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

0
投票
SomeType someVariable = null;

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

    throw;
}

0
投票

重构代码怎么样?

而不是这个:

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

将所有依赖变量的代码放入try块中:

                        try {
                          SomeType someVariable = getVariableOfSomeType();
                          perform_calculation(some_variable); // <---- all code here
                        } catch

我要表达的观点是:考虑重构你的代码。

© www.soinside.com 2019 - 2024. All rights reserved.