私は知っています...私は知っている...パフォーマンスはここでの主な関心事ではありませんが、単に好奇心のために、何が良いですか?何が良いですか:int.TryParseまたはtry {int.Parse()} catch
bool parsed = int.TryParse(string, out num);
if (parsed)
...
OR
try {
int.Parse(string);
}
catch() {
do something...
}
私は、文脈が主張する一般的な推測に同意しますが、私はTryParseが*ほとんど常に*良いと言いたいと思います。それは非常に主観的な個人的な好みより少しだけです。あなたの反例(投げられる可能性のある異なる例外を区別する)はかなり珍しく、おそらくキャッチオールではなく例外タイプごとにキャッチブロックでコード化されているほうがよいでしょう。 – Joe
@Joe:はい、異なる例外タイプを区別したい場合は、特定のcatchブロック以外のものは非常に奇妙に見えます。私の答えは、質問の特定のコードサンプルではなく、 'Parse'と' TryParse'を議論することを目的としていました。私がコメントの中のどこかで言及したように、 'TryParse'は*ほとんど常に*良い方法ですが、キーワードは「ほとんど」ではなく「常に」です。 –
@ジョー:私はすでにその議論をしました。元の質問へのコメント交換を参照してください。絶対的なステートメントについてのフレドリックの権利は決して真実ではありません。 (OMGのパラドックス!) –