2017-05-16 19 views
1

私はtryとcatchでコードを持っています。例外をスローするC#advanced

try 
{ 
    //Some Code... 
} 
catch (Exception err) 
{ 
    throw err; 
} 

私が知りたいことは、そのようなコードを書くことに利点があるかどうかです。 catchからexeptionをスローして、破損した行からエラーを取得するのではなくtryとcatchを記述します。

ありがとうございます。

+5

あるとして書かれた場合は、何のメリットがないと、スタックトレース –

答えて

3

あなたが例えば、それで何かをしようとする場合にのみ、それに余分な情報を追加そのようなファイルか何かにそれをログに記録、または例外を変更するには、例外をキャッチする必要があります

try 
{ 
    //Some Code... 
} 
catch (WebException err) 
{ 
    throw new LicenseException("This was really bad!", err); 
} 
catch (Exception err) 
{ 
    err.Data.Add("some-info", 123); 

    logFramework.Log(err); 

    throw; 
} 

決して同じ例外(throw err)を返すことはありません。そのときにコールスタックを失います。代わりに、ちょうどthrow、コールスタックを保持します。

+0

を台無しにする唯一の欠点は、あなたが追加してくださいすることができます最終的に{}ここに私はアップフート –

+0

最後に何のために?このサンプルにはどのような目的がありますか? @MadMyche質問のその部分ですか? –

+0

いいえ、私たちが集団としてベストプラクティスを修正して使用しようとしている場合、私はクリーンアップコードを投げます –

0

どちらのオプションでも、より高いレベルでのcath例外が必要です。最初のオプション(あなたのコード)は、例外に反応したり追加のログを作成する機会を与えます。

0

このようなアプローチを使用することもできますが、一般的には推奨されません。 あなたはこのように例外をスローする必要がある場合はまた、あなたのコードを少し変更する必要があります。

try 
    { 
     //Some Code... 
    } 
    catch (Exception err) 
    { 
     //I'll recommend to remove err here, because if not you'll lose the full stack trace. 
     throw; 
    } 
関連する問題