none
ファイルオープン時のエラー発生方法に関して

    質問

  • お世話になります。

    CStdioFile::Open使用時にエラーが発生した場合の動作をテストで確認したいと思っています。

    CFileException::m_causeの値で、発生し得るすべての値についてテストで確認したいと考えています。

    現状、以下の値については確認済みです。

    m_cause (エラー発生方法の例)

    ----------------------------

    fileNotFound (Open処理直前にファイルを削除する)

    badPath (Open処理直前にフォルダーを削除する)

    sharingViolation (ファイルを事前に他のアプリで開いておく)

    ----------------------------

    以下の通り、定義値として、全部で1~15までの原因があると思うのですが、

    https://msdn.microsoft.com/ja-jp/library/as5cs056.aspx

    上記以外の値の具体的なエラー発生方法について、ご存知の方がいらっしゃいましたらアドバイスお願いいたします。 

    2018年7月2日 4:40

回答

  • >上記処理を含んだアプリが搭載されたパソコンを、そのアプリの使用者が操作して、可能な範囲でエラー発生時の動作を確認したいというのが意図です。

    まず、この試験で確認できる内容と、擬似的に例外を発生させて確認できる内容との間において、どの様な点が異なるのかがわかりませんでした。
    もし明確な違いがないのであればその試験には意味がないかもしれないということを指摘しておきます。

    そのうえで、できそうなのは diskFull ぐらいしか思いつきませんでした。
    これは、SD等を使えばなんとかなるかもしれません。

    蛇足ですが、個人的にはC++言語においての例外は、設計時には予測できなかった障害が発生した場合でも、被る損失が最小限になるようにするための対策ととらえています。
    原理的に、予測できない現象を発生させることはできないため、その試験計画を作成することはできません。
    また、予測可能な障害については、回避策又は復旧対策がコード可能であると考えられます。

    • 回答としてマーク pholxia 2018年7月2日 9:44
    2018年7月2日 9:29

すべての返信

  • 質問になってしまって申し訳ないのですが、
    catch後の動作確認をしたいだけであればAfxThrowFileException()を実行すればスローされます。
    で、それではだめということを意図してますでしょうか。
    2018年7月2日 5:36
  • 返信ありがとうございます。

    すみません、意図を記載していませんでした。

    上記処理を含んだアプリが搭載されたパソコンを、そのアプリの使用者が操作して、

    可能な範囲でエラー発生時の動作を確認したいというのが意図です。

    設計・実装者とは別のテストオペレータが動作を確認するイメージです。

    2018年7月2日 7:57
  • >上記処理を含んだアプリが搭載されたパソコンを、そのアプリの使用者が操作して、可能な範囲でエラー発生時の動作を確認したいというのが意図です。

    まず、この試験で確認できる内容と、擬似的に例外を発生させて確認できる内容との間において、どの様な点が異なるのかがわかりませんでした。
    もし明確な違いがないのであればその試験には意味がないかもしれないということを指摘しておきます。

    そのうえで、できそうなのは diskFull ぐらいしか思いつきませんでした。
    これは、SD等を使えばなんとかなるかもしれません。

    蛇足ですが、個人的にはC++言語においての例外は、設計時には予測できなかった障害が発生した場合でも、被る損失が最小限になるようにするための対策ととらえています。
    原理的に、予測できない現象を発生させることはできないため、その試験計画を作成することはできません。
    また、予測可能な障害については、回避策又は復旧対策がコード可能であると考えられます。

    • 回答としてマーク pholxia 2018年7月2日 9:44
    2018年7月2日 9:29