Rust part10at TECHRust part10 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト552:デフォルトの名無しさん 21/05/10 10:13:54.77 Pi5UB1M6.net そういやCで bail: ラベルが多用されてたなーっていうのを anyhowクレートの bail! マクロで思い出した 553:デフォルトの名無しさん 21/05/10 10:16:15.81 pIvV80n0.net >>541,542 クソスレチ 554:デフォルトの名無しさん 21/05/10 10:23:18.20 ro06Xyvc.net >>542 例外処理を使った場合、goto文が要らない: BOOL func() { BOOL rc = TRUE; open_some(x); try { func2() ; // 例外発生の可能性有り func3() ; // 例外発生の可能性有り } catch(...) { printf( "エラーだよ\n" ); rc = FALSE; } close_some(x) return rc; } 555:デフォルトの名無しさん 21/05/10 10:23:53.36 ro06Xyvc.net >>545 ただし、この場合、x をクラスのオブジェクトで、x がデストラクトされる 時に自動的に close_some()を呼び出すようになっていれば、そもそも goto文は不要なので、例外処理でやらなくても最初からgoto文が現れない。 しかし、すべてがクラスオブジェクトになっているわけではない。 典型的な例は、 BOOL last_flags = g_flags; g_flags = 一時的なフラグ設定; ・・・ if ( xxx ) { // エラー発生: rc = FALSE; goto lab_ex; } lab_ex:; g_flags = last_flags; return rc; のようなもの。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch