[過去ログ] C++相談室 part165 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
21: デフォルトの名無しさん (ワッチョイ a905-fLgT) [sage] 2023/11/03(金) 10:21:23.72 ID:sUQ44pbr0(1) AAS
←vーー( ゚∀゚)!ー^ー
133
(1): デフォルトの名無しさん (ワッチョイ 7f7c-JApz) [] 2024/01/11(木) 04:45:44.72 ID:wlSOhq+Y0(1/2) AAS
例外って全部mainで捕捉すべきかな?

調べてみたら例外が捕捉されずにプログラムが終了する場合スタックアンワインドが起こるかは実装定義みたいなんだけど、それじゃグローバルなオブジェクトのデストラクタが呼ばれないんじゃないかって思って試してみたのよ。
外部リンク:ideone.com
やっぱりデストラクタは呼ばれなかったからリソースリークが起こりうるんじゃないかと思うんだけど、例外に対してはどういう態度でいるべきかな?

A. リソースリークはまずい。だから例外は全部捕捉するべき。
B. 例外はロジック上捕捉する必要があるものだけ捕捉して、それ以外はほっといていい。
C. 例外が捕捉されなければstd::abortが呼ばれるので、コアダンプなりで色々調べることもできる。だからmainで例外を全部握りつぶすようなことはすべきではない。
D. 時と場合による。

例外時の挙動とか仕様とか調べてるうちに頭ぐるぐるしてわけわかんなくなってきた
140: デフォルトの名無しさん (ワッチョイ ff11-Nf4k) [sage] 2024/01/11(木) 20:09:51.72 ID:AWAYnmwT0(2/4) AAS
>>137
137(1): デフォルトの名無しさん (ワッチョイ 7f3a-NF1f) [] 2024/01/11(木) 09:02:22.25 ID:dA95iQ6m0(1) AAS
OS管理なリソースはアプリの終了なんか知らないってのもあるからなぁ
得にドライバ関連とかな
しったかすんな
147: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7f3e-Cx9t) [sage] 2024/01/12(金) 02:09:19.72 ID:Z8/dVhwe0(1/2) AAS
理想的には全ての例外はキャッチされるべき。 ただ、現実は理想的ではない。
キャッチするのは対処するためなので想定漏れで思ってもなかったような例外が上がってきた (対処が出来てない) ならそれはバグなんだから検証して修正する必要があるわけだし、検証しやすい形で止まったほうがいい。

C++ ではスタックの巻き戻しの途中で例外を送出したときの挙動は未定義なので通例ではデストラクタから例外を投げないように設計される。
つまりデストラクタでの後始末に失敗したらもうそれを (例外機構の仕組みでは) フォローできない。
想定されてない例外が上がってるときに後始末がちゃんとできずにわけのわからない動作を引き起こしたら検証にも支障がある。
171: デフォルトの名無しさん (ワッチョイ 6ecf-CdjJ) [sage] 2024/01/15(月) 19:20:39.72 ID:Y8oMeLNI0(3/5) AAS
なんで爆増?
246: デフォルトの名無しさん (ワッチョイ 637c-IqbK) [sage] 2024/02/11(日) 10:07:06.72 ID:9XvrSVak0(2/2) AAS
>>244
244(2): デフォルトの名無しさん (ワッチョイ 1e27-2ki6) [sage] 2024/02/11(日) 09:47:48.79 ID:2tL2xZqD0(2/3) AAS
>>242
お前はバグのないお花畑を考えてるからそういう理想的な抽象論を持ち出すんだよ
c++の現実は道を踏み外したら即カオス
stlのコンテナのpopに返り値がない理由は知ってるか?
あのレベルの考察でソフトウェア設計している人間が世の中にどれだけいると思う?
バグのあるなしなんか関係ない設計の話だし、「例外はエラー伝達の具体的方法の一つ」って話のどこが抽象的なのかも分からないし、
「C++の現実」とか「カオス」が具体的に何のことで何の関係があるかも分からないし
STLにpopがないのはnoexcept moveがない時代に例外安全に出来なかったからだけど今の話に何の関係があるかわからないし
そんなのまともなC++erなら誰だって考えて設計してると思うけど、そうでないタコの話が何の関係あるかわからないし何もかも分からなすぎてすごい
仕事でそんなドキュメントやレビューコメント出すなよ

>>245
245(2): デフォルトの名無しさん (ワッチョイ 1e27-2ki6) [sage] 2024/02/11(日) 09:55:44.37 ID:2tL2xZqD0(3/3) AAS
>>241
>>169を否定している
知らない例外が飛んできた場合にcatchして握りつぶしてそのまま動作を継続するかどうかって話な
知らない例外を握り潰すのも、知らない戻り値をガン無視するのも一緒
errnoが変わってるのを無視するのもint*err引数に渡した変数の値を無視するのもexpected<T,E>で帰ってきたEを無視するのも「知らんエラーを無視した」という結果は一緒
知らんエラーを無視していいかどうかの意味論と、そのエラーがどう伝播して来るかかは関係ない
関係ない話を混ぜるからお前のC++はカオスなんだよ
374
(1): デフォルトの名無しさん (ワッチョイ 5d01-viEi) [sage] 2024/07/28(日) 12:00:20.72 ID:x9q80Pnt0(1) AAS
>>370
370(1): デフォルトの名無しさん (ワッチョイ 4901-7phL) [sage] 2024/07/27(土) 21:03:15.66 ID:zOSUCWw50(1) AAS
>>368
auto使えば?

auto
オートね
(いいこと聞いた
497: デフォルトの名無しさん (ブーイモ MMde-7TYI) [sage] 2024/09/28(土) 14:26:57.72 ID:yW35cSECM(1) AAS
その手の話はMICROSOFTの新機能ぐらいい思っておけば
腹も立たない
766: デフォルトの名無しさん (アウアウエー Sa23-D2PX) [] 2025/03/18(火) 18:06:10.72 ID:2EW8BzNca(1) AAS
>>760-762
各要素のサイズが一定じゃないから無理なんやろな
821
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ cd32-nY3F) [sage] 2025/04/06(日) 09:09:40.72 ID:CSMreA7R0(1/4) AAS
>>818
818(1): デフォルトの名無しさん (ワッチョイ 6ea1-pnyl) [sage] 2025/04/06(日) 00:01:49.29 ID:xzDebXnC0(1/3) AAS
質問なのですが基底クラスでpublicとした仮想関数の可視性を派生クラスでprivateに狭めることができるのですが
なんでこんな仕様なの?
これは逆に言うと派生クラスでprivateとした一般メソッドに対し、
たまたま同じシグネチャの仮想関数を基底クラスで定義されたら基底クラス経由でprivateとしたメソッドを外部から呼び出せ
てしまいカプセル化の危機……!
そういう仕様になっているメリットとは一体……
コードで言えばこういう状況かな?
外部リンク:wandbox.org

基底にある仮想関数と同じシグネチャならオーバーライドするという規則は単純に言語設計の失敗。
だからこそ override 指定子が導入された。

override 指定子ではオーバーライドのつもりでオーバーライドになっていないときを検出できても
オーバーライドではないつもりでオーバーライドになってしまうことは検出できないのだが……
互換性を壊す変更を入れるわけにもいかずそのままズルズルと今まで失敗を引きずってきたという歴史的経緯。
894: デフォルトの名無しさん (ササクッテロロ Spd1-gX4K) [sage] 2025/04/12(土) 08:50:38.72 ID:7ueEveVip(1) AAS
つまり、OSをrustで書き換えたらって話かなぁ?
952: 青木康善 (アウアウウー Sa21-0ulL) [sage] 2025/04/21(月) 20:22:54.72 ID:ArvlOry0a(1/2) AAS
reasonというソフトのrack extentionを作りたいです。
988: デフォルトの名無しさん (ワッチョイ 66a1-0INX) [sage] 2025/04/26(土) 17:25:44.72 ID:DKbZdqM30(1) AAS
>>961
961(2): デフォルトの名無しさん (ワッチョイ 5e85-M5IX) [sage] 2025/04/23(水) 23:23:42.67 ID:1cvTRmDz0(1) AAS
いまだにgoto論とかw
いかに効率的にAIに作らせるかの時代だぞ
誤差レベルの最適化なんかやってる場合かよ
breakもcontinueもgotoの一種なのだから仕方が無い
行先がスコープの始まりか終わりに限定される、というのが良心的なだけで
実行フローをぐちゃぐちゃにできうる能力のはgotoとほとんど変わらないし、、、
for (i=0; i < 100; i++) {
  if (i == a) { continue; }
  if (i == b) { break; }
  if (i == c) { continue; } // i== aとi==cをまとめるとしたら、if (i == a && i != b && i == c) { continue; }としないとバグ
  if (i == d) { break; }
}

また例外はスローする関数と条件を把握していない限り、
いつ炸裂するかわからないステルスgoto文がコード中にばらまかれているのとだいたい同じ……
従って構造化プログラミングで議論に結論がデタと考えるのは早計で、goto問題は永遠に古くて新しい問題……
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.047s