1

私はこれに数回遭遇しました:

try {
  if (condition()) {
    return simpleFunction(with, some, args);
  } else {
    return complexFunction(with, other, args);
  }
catch (something) {
  // Exception thrown from condition()
  return complexFunction(with, other, args);
}

complexFunction への呼び出しを繰り返さないようにする方法は (どの言語でも) ありますか? 理想的には、コードの意図を曖昧にすることなく?

4

2 に答える 2

1

C#なら、あなたはできる...

    try
    {
        if (condition()) {
            return simpleFunction(with, some, args);
        }
    }
    catch
    {
        // Swallow and move on to complex function
    }

    return complexFunction(with, other, args);

条件例外がスタックを継続するように更新

if (condition()) {
    try
    {
        return simpleFunction(with, some, args);
    }
    catch
    {
        // Swallow and move on to complex function
    }
}
return complexFunction(with, other, args);
于 2013-01-19T08:32:47.180 に答える
0

condition()失敗した場合は例外をスローします

try
{
  if (condition())
  {
    return simpleFunction();
  }
  throw conditionException();
}
catch(conditionException ce)
{
  return complexFunction();
}

とても親切に指摘されているように、これはコードを書くべき方法ではありません。ただし、質問は解決します。ある程度、質問の「パターン」の意図と一致しているように見えます。つまり、条件が例外をスローしたりfalseを返したりした場合は、失敗したと見なされます。

于 2013-01-19T08:45:06.193 に答える