トップページ⇒tech
27コメント6KB

エラー処理検討スレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/04/17(月) 12:48:44
エラー処理を制する者は、プログラムを制す。

ということで、エラー処理に付いて検討しませんか?
0002デフォルトの名無しさん2006/04/17(月) 13:05:51
2chにおけるエラー処理は削除依頼だ。出しとけよ。
0003デフォルトの名無しさん2006/04/17(月) 14:10:28
データ→血液
エラー→リンパ液
0004デフォルトの名無しさん2006/04/17(月) 19:27:24
C++で例外投げる時、
runtime_error から派生させるか
logic_error から派生させるか
迷うことない?
0005デフォルトの名無しさん2006/04/17(月) 22:26:41
上流でそんな場合分けしてることは滅多にないので気にしない。
0006デフォルトの名無しさん2006/04/18(火) 05:19:04
>>1-1000
↓こっち池。

例外処理
http://pc8.2ch.net/test/read.cgi/tech/1142667446/
0007デフォルトの名無しさん2006/04/18(火) 15:38:54
>>4
Sutterはlogic_errorは意味なしだと暗に書いてるよな
ASSERT使えよと
0008デフォルトの名無しさん2006/04/18(火) 19:25:31
>>7 まぁ logic_error とその派生クラス投げるってのは、
assert() と同じく本来その例外が発生するのはおかしい、
っていうケースだけなんだろうけど、実際はそうでない
シチュエーションでも投げる設計になってるコードが多いよな。
0009デフォルトの名無しさん2006/04/27(木) 22:31:22
>>6

C言語なんですがどうやれば例外処理できますか?
0010デフォルトの名無しさん2006/04/27(木) 23:42:21
longjmp
0011デフォルトの名無しさん2006/04/28(金) 00:27:31
>>9
エラーコード返すなり、C言語流にやればいい。
0012デフォルトの名無しさん2006/04/28(金) 13:23:18
それは例外処理と言うより一般的なエラー処理じゃね?
0013デフォルトの名無しさん2006/04/28(金) 13:24:48
>>12
http://e-words.jp/w/E4BE8BE5A496E587A6E79086.html
0014デフォルトの名無しさん2006/05/01(月) 15:18:13
e-Wordsってスポーツ新聞並ですよね。
0015デフォルトの名無しさん2006/05/17(水) 21:40:01
>>9
Windowsなら構造化例外処理という、言語によらない、OSがサポートするメカニズムがある。
コンパイラが、それに対応していないとダメだが。
0016デフォルトの名無しさん2006/07/01(土) 02:32:07
Assertはエラー処理ではない。
デバッグのための機能だということを憶えておいてほしい。
開発者が自前でやるテスト以外は普通はデバッグモードでコンパイルなどされません。

ありえないエラーというやつはおきるもの(mutexロックが外部要因でエラーになることを俺も目撃して初めて知った)
それをAssertでエラー処理したつもりになると暴走してえらいことになります。
フリーズしました・リセットしましたの方が、暴走するよりましです。

0017デフォルトの名無しさん2006/07/01(土) 11:21:26
Cなら、ASSERTマクロを切るのはNDEBUGマクロだしな。
>>16のいってることは当然のことで、明白だよね。
0018デフォルトの名無しさん2006/07/01(土) 11:27:05
標準は assert.h の assert() な。
ASSERT() は Microsoft だっけ?
Assert() はどこの出だ?
0019デフォルトの名無しさん2006/07/01(土) 18:19:04
>>16
あまりに当たり前のことを言って、何がしたいの?
0020デフォルトの名無しさん2006/07/01(土) 20:39:53
リリース時は例外になるとか、
必要に応じてやればいいじゃん。
0021デフォルトの名無しさん2006/07/02(日) 20:29:16
UINTとDWORDのどっちにしたらいいか悩むときってないですか?
これどういう基準で決めるの?
0022デフォルトの名無しさん2006/07/02(日) 20:32:18
値を演算するかどうか、カナ。
0023デフォルトの名無しさん2006/07/02(日) 20:59:45
まずAPIの仕様でどれを使うか決まってしまう場合は勿論それに従う(しかない)。

DWORDは(uint32_tの代替として)32ビット符号無し整数型が欲しいときに使う。
UINTはunsigned int(単なる符号無し整数型)が欲しいときに使う。
でULONGは出番無し。
0024デフォルトの名無しさん2006/09/14(木) 06:51:57
最近64bit長が欲しい場合があるけど
その場合は__int64すか?
0025デフォルトの名無しさん2006/09/14(木) 14:29:58
俺の場合、本当に64ビット長が欲しければ、int64_t (<stdint.h>, <boost/cstdint.hpp>)を使う。
そうでなければlong long (VC++でも最近は使える)やLONGLONG <windows.h>を使う。

そもそもスレ違い。
0026デフォルトの名無しさん2006/09/14(木) 14:53:05
__m64
0027デフォルトの名無しさん2006/09/14(木) 19:40:54
個別のエラー処理の話になると、マ板ネタになりそうなおかん
■ このスレッドは過去ログ倉庫に格納されています