タグ付けされた質問 「try-catch-finally」



20
なぜ{…}やっと{…}が良いのでしょうか。{…}キャッチ{}してみませんか?
引数なしでキャッチを使用することは、特にそのキャッチが何もしない場合は、悪い形だと人々が言うのを見てきました。 StreamReader reader=new StreamReader("myfile.txt"); try { int i = 5 / 0; } catch // No args, so it will catch any exception {} reader.Close(); ただし、これは適切な形式と見なされます。 StreamReader reader=new StreamReader("myfile.txt"); try { int i = 5 / 0; } finally // Will execute despite any exception { reader.Close(); } 私が知る限りでは、クリーンアップコードをfinallyブロックに配置することと、try..catchブロックの後にクリーンアップコードを配置することの唯一の違いは、tryブロックにreturnステートメントがある場合です(その場合、finallyのクリーンアップコードは実行されますが、try..catchの後のコードは実行されません)。 そうでなければ、最後に何がそれほど特別なのですか?

3
@try-Objective-Cのcatchブロック
@tryブロックが機能しないのはなぜですか?アプリをクラッシュさせましたが、@ tryブロックによってキャッチされるはずでした。 NSString* test = [NSString stringWithString:@"ss"]; @try { [test characterAtIndex:6]; } @catch (NSException * e) { NSLog(@"Exception: %@", e); } @finally { NSLog(@"finally"); }

6
Javaのfinallyブロックから戻る
最近、Javaのfinallyブロックにreturnステートメントを含めることが可能であることを知って驚いた。 「finally節に戻らないでください」で説明されているように、多くの人がそれを行うのは悪いことだと思っているようです。少し深くスクラッチすると、「Javaのリターンは常にではない」こともわかりました。これは、finallyブロック内の他のタイプのフロー制御のかなり恐ろしい例を示しています。 だから、私の質問は、finallyブロックのreturnステートメント(または他のフロー制御)がより良い/より読みやすいコードを生成する例を誰かに教えてもらえますか?

6
最終的にtry catchブロック内から戻るのは悪い習慣ですか?
だから今朝、次のようなコードに出くわしました。 try { x = SomeThingDangerous(); return x; } catch (Exception ex) { throw new DangerousException(ex); } finally { CleanUpDangerousStuff(); } これで、このコードは正常にコンパイルされ、正常に機能しますが、特に関連付けられた最終的なものがある場合は特に、tryブロック内から戻るのは適切ではないと感じます。 私の主な問題は、がそれ自身の例外を最終的にスローするとどうなるかです。あなたは返された変数を持っていますが、処理する例外も持っています...だから私は他の人がtryブロック内から戻ることについてどう思うか知りたいですか?

6
「最終的に」は常にPythonで実行されますか?
Pythonで可能なtry-finallyブロックの場合、finallyブロックが常に実行されることが保証されていますか? たとえば、exceptブロック内に戻ったとしましょう: try: 1/0 except ZeroDivisionError: return finally: print("Does this code run?") または多分私は再調達しExceptionます: try: 1/0 except ZeroDivisionError: raise finally: print("What about this code?") テストはfinally、上記の例で実行されることを示していますが、私が考えていない他のシナリオがあると思います。 finallyPythonでブロックの実行が失敗する可能性のあるシナリオはありますか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.