|
カバレッジっすか・・・とりあえずウチでは今のところは求められていないのですが、悩ましい問題ですね。
投げられた例外がどこで捕らえられるかは、例外の性質上予期できないので難解ですし
(きっちりデバッグされていれば)絶対に発生しない catch 句の通過を求められたりしたらイヤんです。
組み込みマイコン上の C++ に関しては try/catch 使ったこと無いですねぇ・・・使いどころが無いというか。
客先でバグが出ても最終的には WDT でリセットさせるしか手が無いし。
組み込みマイコンソフトでは ROM 容量や実行速度の問題で、
ソースコード上に assert は書いてますが通常ビルドでは無効化していることがほとんどです。
挙動がおかしいとき、特定数個のファイルだけ有効化するように使っています。
(全ソースファイルの全部の assert を有効にすると ROM に入りきらなかったり・・・)
FileStream のような「失敗を例外で実装」している奴はしょうがないので try/catch してます。
この前書いたコードを探してみたら
try {
using (FileStream f = new FileStream(fn, FileMode.Open, FileAccess.Read)) {
sz = (UInt32) f.Read(image, 0, max_size);
}
} catch (System.SystemException) { return 0; }
return sz;
でした。まあこんなもんでしょ。
そっか。オイラが例外機構を使わない/使いたくない理由はメインの業務がマイコンソフトだからか。
最近の言語 (Java/C# 等) でプログラム覚えた人だと違うのかなぁ。
|