私はAtmelプロセッサからRaspberry Piに移植したい古いCベースのプロジェクトを持っています。C++の例外処理でCコードをラップするには?
書かれた時点では、C++はオプションではなく、すべてをC++に変換するにはあまりにも手間がかかりました。
いくつかの問題やクラッシュはCによって(簡単に)捕まえられないことがありますので、私のプログラムはちょうど死ぬでしょう。&期限切れになる前に最後のチャンスを送ろうと思います。復旧を試みていないし、エラーの詳細なしで暮らすこともできます。機器を訪問するようなメッセージが表示されている限り、
私は例外があればエラー検出が改善されると思います取り扱い。
私は、デバイスに行って完全なエラーログを取得し、ハードウェアをリセットするように警告するチャンスとして例外処理を使用することを考えています。Cはいつも、コードが爆発する
私は合計C++リライトをしたくないので、/catch
にmain()
を入れれば十分でしょうか?
技術的には十分ですか、それとももっと処理する必要がありますか?
もっと詳細なエラー報告以外に、すべての(メジャー)機能を自分自身でラップすることで何かを得ることができるでしょうかtry
/catch
?
例外は 'throw'文によってスローされます。 Segフォルトは例外をスローする必要はありません。彼らは未定義の動作の症状です。 –
セグメンテーションフォールトは、try/catch(...)によって捕捉されないことが保証されています。 実際には、Cスタイルのハンドラを指定してもセグメンテーションフォールトの後に続けるべきではありません。 私はあなたに広範なログと最高のための希望と各Cの関数の周りにtry/catchを追加することをお勧めします! – Rami
私はseg faultと言ったことを忘れてください(しかし、+1、両方);それは悪い例でした&私は質問から削除します(私はNULLのパラメータをチェックしますが、すべての間接参照の前に必ずNULLをチェックするとは限りません)。しかし、@PeteBeckerの例外は例外ではありません*** ***はスローから発生し、それは私がキャッチしようとしているものです – Mawg