トップページ > プログラム > 2016年08月11日 > /EdBDLFJ0

書き込み順位&時間帯一覧

7 位/161 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000031000000000000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ 2a8b-GBh+)
934 (ワッチョイ 2a8b-GBh+)
C++相談室 part125 [無断転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part125 [無断転載禁止]©2ch.net
932 :デフォルトの名無しさん (ワッチョイ 2a8b-GBh+)[sage]:2016/08/11(木) 08:07:02.61 ID:/EdBDLFJ0
質問ですが、
Q1. 例外をスローしても呼び出し元で解決できる見込みが無いレベルの事象が
 コンストラクタ内で生じたときどうするのが普通?
 プログラム全体の終了を意図するとして、std::terminate()とstd::abort()ではどっちが弊害が少ないんじゃろうか…
 もしくはより良い別の手段とかあればkwsk

Q2. 汎用ライブラリの設計者が従うべき例外スローのガイドラインとかあったらkwsk
 (std::exception派生クラスのうちで、いつどの例外をスローすべきかとか
C++相談室 part125 [無断転載禁止]©2ch.net
934 :デフォルトの名無しさん (ワッチョイ 2a8b-GBh+)[sage]:2016/08/11(木) 08:19:32.10 ID:/EdBDLFJ0
>>933
質問は例外スロー前提ではない(例外をスローしても呼び出し元で解決できる見込みが無いレベルの事象)なのでよろ
コンストラクタで例外をスローするときの挙動と基本的な作法は知ってるし、
C++相談室 part125 [無断転載禁止]©2ch.net
935 :934 (ワッチョイ 2a8b-GBh+)[sage]:2016/08/11(木) 08:23:35.28 ID:/EdBDLFJ0
訂正;
誤: 質問は例外スロー前提ではない
正: Q1は必ずしも例外スロー前提ではない

レスのために打鍵してくれたことには感謝してるチュ(はあと
C++相談室 part125 [無断転載禁止]©2ch.net
938 :デフォルトの名無しさん (ワッチョイ 2a8b-GBh+)[sage]:2016/08/11(木) 09:00:42.10 ID:/EdBDLFJ0
スマンQ1は質問の仕方がまずかったかもしれん…
あるクラスFooのコンストラクタで例外が生じたとき、後始末したがっているブツとしては
 (1) Fooの基底クラス
 (2) Fooの初期化済みメンバ
 (3) Foo::Foo()の呼び出し元、そのさらに呼び出し元…
 (4) atexit()系の関数で終了ハンドラを登録した実体
 (5) set_unexpected()で例外ハンドラを登録した実体
というのが有り得ると思うので(他にまだあったりする?)、
コモンセンスなど有り得ない気がしてきた…
(多分汎用ライブラリでは全部手当てすべき(理想)なんだけど、
 特に(2)を完璧にやるにはFooの全メンバをstd::unique_ptr<T>化とか、
 レアケースのためにありえない打鍵量を要求される(現実)ので、
 どこまで救って何を切り捨てるのかもFooの設計のうちになりそう?


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。