Qtでテキストファイル出力時のエラー検知


Qt(C++)でファイル出力するときに、エラー出力はどうすればいいのでしょうか  
オープン失敗時は良いのですが出力時はどのように検知したら良いでしょう

[code]

        QFile file(FullPath);
        if(!file.open(QIODevice::Append)){          //ファイルオープン
            //ファイルオープン失敗
            //エラー処理色々
            return;
        }
    
        QTextStream out(&file);
        QTextCodec* codec = QTextCodec::codecForName("Shift_JIS");
        out.setCodec(codec);
    
        out << "テキスト色々\r\n";               //キューから取り出した文字列をそのままテキストストリームに出力する
        //エラーの検知どうするか?
        file.close();
    
[/code]




[QTextStream
のコード](https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/serialization/qtextstream.cpp?h=dev)
を見ると、 データを読み込む際には内部で setStatus() をして status()
を更新していますが、書き込み時にはステータスのチェックはしていないようです。

ということで、QFile (の基底クラスの QFileDevice)の
[error()](https://doc.qt.io/qt-5/qfiledevice.html#error) を確認する方が確実だと思います。




質問するときは環境に関する情報を詳しく記述しましょう。

  * [技術系メーリングリストで質問するときのパターン・ランゲージ](https://www.hyuki.com/writing/techask.html)

厳密にチェックするのであれば、おそらく操作のたびに都度[`QTextStream::status()`](https://doc.qt.io/qt-5/qtextstream.html#status)を呼び出す必要があるんじゃないでしょうか。  
書き込みエラーが発生した場合は[`QTextStream::WriteFailed`](https://doc.qt.io/qt-5/qtextstream.html#Status-
enum)が返ってくるのだと思われます。

QtのAPI設計がどうなっているのか詳しくは知りませんが、少なくともリファレンスには、`QTextStream::operator<<()`は異常系において例外をスローするとは書かれていないようです。

もともとQtは例外ではなくエラーコードを使用する設計になっていて、例外クラス[`QException`](https://doc.qt.io/qt-5/qexception.html)はQt
5.0で追加されたものだそうです。

  * [Exception Safety | Qt 5.15](https://doc.qt.io/qt-5/exceptionsafety.html)

