[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
183: デフォルトの名無しさん (ワッチョイ 6d63-H5uA) [sage] 2024/01/28(日) 12:13:11.85 ID:W0uCnQb30 >>182 >catchしようがしまいが、例外が起きて 処理A→B→return となるのは同じだと思うが。 それは問題の認識がおかいし 例えば以下のコードにおいて、スレッドのゾンビを生じさせないためにはfuncB()をtry { } catch () { } は必須になる。 void bar() { funcA(); // スレッドxを起動 funcB(); // 中でbaz() → foo()の呼び出し funcC(); // スレッドxに停止シグナル発酵 funcD(); // スレッドxの終了待ち return; } このように一般に例外が飛んでくる関数にはcatchするかしないかの選択権など無い 例外安全なオブジェクト「だけ」で事が済んでいない限り、例外を受けると決めた時点でcatchせねばならない 一方、例外を生じないライブラリの使い方(関数の呼び出し方)を心掛けるかどうか。これなら選択肢がある http://mevius.5ch.net/test/read.cgi/tech/1698705458/183
185: デフォルトの名無しさん (ワッチョイ 797c-+np5) [sage] 2024/01/28(日) 12:19:26.10 ID:/bXkl1Cz0 >>183 それはfuncB()に失敗の可能性がある時に必ず必要な話だろ?例外どうこうじゃないじゃん funcB()が例外を投げずに古き良きintのエラーコードを戻り値で返す場合は何かが変わるの? まさか「funcBの戻り値をガン無視すればfuncCもfuncDも実行されてくれるから完璧!だから例外はクソ!」っていうゴミカスみたいな主張をしたいわけじゃないよね? http://mevius.5ch.net/test/read.cgi/tech/1698705458/185
186: デフォルトの名無しさん (ワッチョイ 66cf-5eDQ) [sage] 2024/01/28(日) 12:28:00.13 ID:Gsm093HM0 >>183 それはcatchが必要かどうかの話だろ。 catchしたらテストケースが増えるかどうかという話とはなんも関係がない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/186
228: デフォルトの名無しさん (ワッチョイ 5763-dZsi) [sage] 2024/02/10(土) 12:18:06.78 ID:KJGevrBa0 >>185 >>183の主張の >一方、例外を生じないライブラリの使い方(関数の呼び出し方)を心掛けるかどうか。これなら選択肢がある が完全に読み飛ばされている件について: 例外を生じないライブラリの使い方で設計したら、funcB()から例外が飛んでくるのはバグなので 調査と修正の対象になる。 (結果的にやっぱtry { funcB(); } catch (/*略*/) { ... } いるじゃーん?となる可能性はあるがたいていはそうはならない >>188のように自分が何をやっているのか認識しないまませき止めるのは論外すぐる…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/228
248: デフォルトの名無しさん (ワッチョイ ef63-uLm/) [sage] 2024/02/11(日) 11:18:37.96 ID:4PD3HqyC0 >>231 >前半のよくわからない計算はcatch句を書いたらそのC0網羅のためのテストケースが必要になるとかいうことなんだろうか 例外が関数の階層をぶち抜いてfall-throughしてくることを忘れている発言 1. catchが書かれた関数が正しくcatchし、適切に処理するか(処理してせき止め or/and 必要な場合再スロー)(←要テスト! 2. fall-throughする関数が例外による処理の中断でおかしいことにならないか(←要テスト! 2をテストもせずに放置するとおかしくなる例は>>183のとうーり これにより、例外を生じる関数foo()の呼び出しパティーンn個それぞれに対し、a個のテストが必要になっる 例外を発生させない使い方をするなら、n*a*mではなくmの定数倍(例外を飛ばさない使い方に依存擦る定数)。 例外が飛んで来たらバグ。わかりやすい 例外を多用しつつn*a*mをよくわからない計算とか言っている時点で以下略 http://mevius.5ch.net/test/read.cgi/tech/1698705458/248
305: デフォルトの名無しさん (ワッチョイ 8b63-eOBD) [sage] 2024/03/04(月) 07:58:21.27 ID:KYG2Ugpe0 なんか予想外に低レなレスポンスを寄越した>>299…… さすがに>>283の後に>>284のような楽天的なことを言えるだけのことはあるということか…… 例外安全は確かに目指すべき境地であり、例外安全なオブジェクトだけでコードを書けば その関数は例外安全となる。try { } catch ()など一切不要、となるわけで一見実現が簡単に思える が、例外安全なオブジェクトだけかをもれなく機械的に確認する方法は無い上に、 中断したら別物になる(処理の順序が命)というアルゴリズムというものの本質的特性により、 >>183 のような try { } catch () が必要なケースは隙あらば混ざり込んでくるから(※1) >>284が空想するようなシステム全体の例外安全化などは現実には不可能。 せいぜいある程度の規模のオブジェクトであれば、十分テストすれば (自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかを慎重に確認せねばならない) ほぼほぼの信頼度で実現できるというぐらい。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/305
306: デフォルトの名無しさん (ワッチョイ 8b63-eOBD) [sage] 2024/03/04(月) 07:59:55.02 ID:KYG2Ugpe0 (※1) >>183 の関数そのものは、例外安全なスレッドオブジェクトでも使ったらtry { } catch () 無しの例外安全な関数うに書き直すことはできうる http://mevius.5ch.net/test/read.cgi/tech/1698705458/306
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.036s