質問

Syntaxかの違いは何ですか

try {
}
catch() {
}
finally {
    x = 3;
}

try {
}
catch() {
}

x = 3;

編集:ます。純2.0?


なので

try {
    throw something maybe
    x = 3
}
catch (...) {
    x = 3
}

はbehaviourally相当?

役に立ちましたか?

解決

言語に依存すという一意味の違い、その考えはその実行をどのように常にある場合でも、コードのみブロックを投げた。

第二とえば、コードのcatchブロックを返しますまたは終了のx=3は実行されません。最初のいうようになります。

できます。NETプラットフォームに、一定の場合の実行の最後にブロックしながセキュリティ例外を、スレッドサスペンション,コンピュータを停止:)など。

他のヒント

でも、ものすごいブロックの最後には、コードが以下のtry-catch-finallyブロックはこれまでのとおりです。

Java:

最後に必ず取得し、わた場合は、例外が正しくで採れcatch()、またはいいキャッチ。

みッ 最後に かの重要な施工性が向上します。を確認することができる場合でも、例外がスローされますが、コードの最後にブロックが実行されることはありません。るという意味でも重要なことに取扱いを外部のリソースを解放します。ごみ収集いたします。ついに一部ないと思います 戻り 諸表に投げることができます。でいるが、いくつかの実践とが予想外の結果.

使ってみればこの例:

try {
  return 0;
} finally {
  return 2;
}

その結果、2:)

比較を他の言語: から返された

あるものを最後にブロックの有:

  1. だから復帰してみてはcatchブロックの最後にブロックが実行され、制御され、呼び出し機能
  2. 例外が発生した場合のcatchブロック、またはキャッチされたと見なされタイプの例外が発生し、tryブロック、コードの最後にブロックが実行されます。

これらを最後にブロックに優れた閉会のファイルの取り扱いはソケット

の場合のみとキャッチは空ですが、ありません。その他確認することができ、最後に実行します。

もし、例えば捨てて新しい例外におcatchblock(rethrow)、課題のみ実行された場合は、最後に-ブロックです。

通常は最後に使用清掃後の自分(DB接続にファイルの取扱など).

使ってはいけません管理-諸表に戻り、休憩、続き)、最後に、この可能維持に悪夢はな不良の実践

の最後にブロックは常にともなっ 常に ... 場合であっても、例外がスローされまたは戻算書の到達が可能な言語により異なります)。うにうに常に呼び出されます。

@iAn、@マット:

いない"きか"なんでも、最後に{}る"設定"内のtry{}ルールになっています。するダストリームの作成以外のtry{}.場合に対応する必要がある例外にストリームを作成することが不可欠であるとより高いレベルのゴールに向です。

StreamReader stream = new StreamReader("foo.bar");  
try {
    mySendSomethingToStream(stream);
}
catch(noSomethingToSendException e) {
    //Swallow this    
    logger.error(e.getMessage());
}
catch(anotherTypeOfException e) {
    //More serious, throw this one back
    throw(e);
}
finally {
    stream.close();  
}

できますので何接続等初期化は、tryブロックです。場合は開の接続やその後発生した例外は、例外がないので正しく閉じられます。この種のシナリオの最後にブロックするものとします。

の最後にブロックを実行するかの例外です。見 Try/Catch/その例

@Ed, されることもありますので、思考のようなもの catch(...) タッチパネルが非特定の例外をC++.

finally あるコードを取得しま実行されない試みがどのような結果に終わろうの catch ブロックとなります。

マイクロソフト社のヘルプページ う-では最後にC#

の最後にブロックの範囲としてはtry/catchでアクセスできるすべての変数を定義します。

たとえばファイルハンドラは、この違いをどのように書いていただくようにしました。

try
{
   StreamReader stream = new StreamReader("foo.bar");
   stream.write("foo");
}
catch(Exception e) { } // ignore for now
finally
{
   stream.close();
}

StreamReader stream = null;
try
{
    stream = new StreamReader("foo.bar");
    stream.write("foo");
} catch(Exception e) {} // ignore

if (stream != null)
    stream.close();

覚えていながらも内部のたん保証されます。想像が得られます中止信号、windowsクラッシュの電源がなくなっています。に依存した事業の重要なコードは悪いものです。

任意のコードの最後にあたる場合についても、独自のレンダリングメカニズム例外です。通常、最後にコードを使ってサポート-プログラムの宣言の翻。dispose().

最後にブロックの許可は、開発者として整後の自分の行為の前のコードは、try{}ブロック検出の誤差、その他はこのことを指しているので、滝の主傘の下での資源を解放し閉のポインタ/ソケットは結果セットを返し接続プール等

@マットが正しいことが常に可能性をハードの故障-では最後にブロックなどを使うコード、取引として処理される重要transactionallyのtry{}

@マットの再現実の美しさであることが可能です例外をスローしなければならない独自の方法が保証するマ:

try
{
StreamReader stream = new StreamReader("foo.bar");
mySendSomethingToStream(stream);
}
catch(noSomethingToSendException e) {
    //Swallow this    
    logger.error(e.getMessage());
}
catch(anotherTypeOfException e) {
    //More serious, throw this one back
    throw(e);
}
finally
{
stream.close();
}

まで多くの種類の例外処理していな(最初の実行できるものtry{}の効果を返しますが、常にきちんと楽しく明らかです。

Javaでは、ご利用でも実行するか否かを問わず使用の"戻る",だから、tryブロック、のた例外により運営されます。

例えば、終値のデータベースセッションやJMS接続、または登録を直接解除一部のOSの資源です。

私の推測できます。います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top