-3

値をチェックするif条件があり、新しいNumberFormatExceptionがスローされます

これをコーディングする他の方法はありますか

if (foo)
{
    throw new NumberFormatException
}

// ..

catch (NumberFormatException exc)
{
    // some msg...
}
4

6 に答える 6

4

このようなことをしている場合:

try
{
   // some stuff
   if (foo)
   {
      throw new NumberFormatException();
   }
}
catch (NumberFormatException exc)
{
   do something;
}

その後、例外を完全に回避し、条件付きブロック内で「何かをする」部分を実行できます。

于 2008-09-30T11:57:02.080 に答える
3

あなたの目的が新しい例外をスローすることを避けることである場合:

if(foo)
{
  //some msg...
} else
{
  //do something else
}
于 2008-09-30T11:54:31.697 に答える
1

別のより洗練された方法で例外を処理できる場合は、例外をスローしないでください。例外はコストがかかるため、制御できないことが起こっている場合 (データベース サーバーが応答していないなど) にのみ使用する必要があります。

値が設定され、正しくフォーマットされていることを確認しようとしている場合は、これらの条件の失敗をより適切な方法で処理するようにしてください。例えば...

if(myObject.value != null && Checkformat(myObject.Value)
{
    // good to go
}
else
{
    // not a good place to be.  Prompt the user rather than raise an exception?
}
于 2008-09-30T12:07:16.937 に答える
0

例外のスローを他のエラー処理メカニズムに置き換えようとしている場合、唯一の選択肢はエラー コードを返すか設定することです。

例外は最高です。

于 2008-09-30T11:58:59.983 に答える
0

NumberFormatException をスローするフローがわかっている場合は、そのケースを処理するコードを作成します。プログラム フロー メカニズムとして例外階層を使用しないでください。

于 2008-09-30T12:27:56.327 に答える
0

Java では、文字列を数値に変換する前に正規表現で解析することができます。

独自の例外をキャッチしようとしている場合 (なぜ???)、次のようにすることができます。

try { if (foo) throw new NumberFormatException(); }
catch(NumberFormatexception) {/* ... */}
于 2008-09-30T11:55:57.183 に答える