質問

私の作成システム。私が知りたい場合には、信は未サポートに何をすべきなのか?べって投げると対応していな信ボックス?き0を返しますまたは-1?いや、あ設定errno(ベース>errno_).メッセージ私は仕ケアにエラーが生じた場合などsetBorderColour).その他い(addTextやかに保存されているかを保存cmd).

知りたいの方法がベストである1)符号化に素早く2)デバッグ3に伸びる。私がデバッグ3には、デバッグATMが利用頂けbcが欠コード私はビーチに位置記入します。実際のバグarentく正しい。していただきましたの最良の方法を行う事によって、ユーザが広がっていると知ったからエラー?

このシステムのようなことがすることが可能となります。このCスタイルmycodeは、バインライン機能を包むsettext(const char*テキスト){msg(こesettext、テキスト)

Base base2, base;
base = get_root();
base2 = msg(base, create, BASE_TYPE);
msg(base2, setText, "my text");
const char *p = (const char *)msg(base2, getText);
役に立ちましたか?

解決

一般的なC++、好例外な性能が重要ではないとする環境で動作(例えば組み込みプラットフォーム)をサポートしない例外をスローしました。例外は、最良の選択のためのデバッグする"ためであることで、顕著な発生時は無視されます。さらに、例外は自己記録.その独自の型名、および通常含まれるメッセージを説明するのはエラーになります。改行コードを、errnoが別途必要ですコードの定義および一のバンドムーズなコミュニケーションのコードを意味任意の指定されたコンテキスト(例えばmanページ、コメント).

のための符号化、コードを返しょうやかんな可能性を定義する独自の例外の種類のエラーチェックをコードなどの詳細と例外をスローしました。もちろん、大きなリスクはあくを無視しエラーコードを返し、問題ないまでも後に起こり、デバッグ、メンテナンスの悪夢です。

をしないようにしても利用errnoかの非常にエラーが発生しやすいです。これは世界的なので、どんどん人がリセットで、最も隣はショッピングセンターで、歩 ない スレッドで安全です。

編集: はないだことから、errnoメンバ変数がないのCスタイルのerrno.このようなグローバルな追加を構築しますのでスレッドに対して安全に使用した場合は、アプリのマルチスレッドで保全の問題点を返します。

他のヒント

エラーコードを返すには、エラーコードを明示的にチェックしてから渡す必要があるため、規律が必要です。このアプローチを使用した大規模なCベースのシステムを作成しましたが、すべての「失われた」ものを削除するのに時間がかかりました。エラー。最終的に、この問題をキャッチするためのいくつかの手法を開発しました(エラーコードをスレッドグローバルな場所に保存し、返されたエラーコードが保存されたエラーコードと一致することをトップレベルで確認するなど)。

例外処理は、コードを書いているときにエラーの処理方法がわからない場合、上方向に伝播させることができるため、コードをすばやく作成するのが簡単です(Javaを使用する必要がない場合)チェック例外)。例外が発生した場所のスタックトレースを取得できるため(また、他の場所でキャッチされるべき問題をトップレベルの例外ハンドラーでキャッチできるため)、デバッグに適しています。正しいことをすれば、問題がより迅速に通知されるため、メンテナンスに適しています。

ただし、例外処理にはいくつかの設計上の問題があり、それを間違えると事態は悪化します。つまり、例外を処理する方法がわからないコードを書いている場合は、例外を伝播させる必要があります。例外を変換して再スローするためだけにエラーをトラップするコーダーが多すぎるため、問題の元の原因に関する情報が失われることがあるスパゲッティ例外コードが発生します。これは、トップレベル(エントリポイント)に例外ハンドラがあることを前提としています。

個人的には、出力グラフィックスに関しては、サイレントフェイルは問題ないと感じています。あなたの写真が間違っているだけです。

グラフィックエラーはとにかく簡単に見つけることができます。

個人的に、ベース構造体が純粋な「C」であれば、ベース構造体にerrnoを追加します。これがC ++の場合、例外をスローします。

これらのエラーがどの程度「致命的」かによって異なります。ユーザーは本当にエラーを見る必要がありますか、それとも他の開発者の啓発のためですか?

保守性のために、発生する可能性のあるエラーを明確に文書化し、エラー処理の明確な例を含める必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top