Rust part10at TECHRust part10 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト550:デフォルトの名無しさん 21/05/10 10:07:49.01 ro06Xyvc.net >>538 開いた後、必ず閉じる処理が必要な場合があるが、それをxとすると、 関数のある場所でエラーを発見した時、呼び出し元へ返りたくても、 xを閉じてからでなくてはならない。xが複数有ったり、今後もxの 量が増えていくような場合、エラーが起きる場所全てでxを正確に全て 閉じてからreturnするのは難しい。なので、昔から、xを閉じる処理は 関数の最後の方に書いておいて、その直前にラベル lab_ex:; のような ものを書いておいて、エラーが起きたときにはlab_exにgoto文 で飛ばすようなことが行われることが多かった。 でも、goto文は好まれ無い事があって、 try, catch 構文を使うと、goto文を使わなくてもそれが出来るようになる ことが例外処理の一つのメリット。 551:デフォルトの名無しさん 21/05/10 10:12:49.59 ro06Xyvc.net >>541 BOOL func() { BOOL rc = TRUE; open_some(x); if ( !func2() ) { printf( "エラーだよ\n" ); rc = FALSE; goto lab_ex; } ・・・ lab_ex:; close_some(x) return rc; } ↑のようなものが、例外処理を使えばgoto文を使わなくても書けるようになる。 ただし、goto文が何でそんなに嫌われるかは謎と言えば謎ぞの一つではあり、 lab_ex:; が見た目的に「浮く」からではないか、という説がある。 しかし、論理構造的にはgoto分がそんなに分かりにくいわけではない。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch