2011-07-14 34 views
7

私は現在、boost :: filesystem :: is_directoryからエラーをキャッチし、例外の "what()"を呼び出すことによってエラーをユーザに示しています。これは失敗の理由を示しますが、エラーはユーザーにとっては不思議です。たとえば、次のようにboost :: filesystem :: is_directory例外をキャッチ

ブースト::ファイルシステム:: is_directory:アクセスは、私はブーストエラーをキャッチし、実際の原因が何であるかを把握することができますどのように

を拒否されたので、私はよりよいエラーメッセージを表示することができます? "よりよいエラーメッセージ" により、

+1

Boost.FileSystemの例外のようなもの(http://www.boost.org/doc/libs/を意味しますrelease/libs/system/doc/index.html) - あなたはそのドキュメントを読んでいますか? – ildjarn

答えて

15

あなたは[Boost.System]の面で実装されている

#include <iostream> 
#include <boost/filesystem.hpp> 
int main() 
{ 
    boost::filesystem::path p("/proc/1/fd/1"); 
    try { 
     boost::filesystem::is_directory(p); 
    } catch(const boost::filesystem::filesystem_error& e) 
    { 
     if(e.code() == boost::system::errc::permission_denied) 
      std::cout << "Search permission is denied for one of the directories " 
        << "in the path prefix of " << p << "\n"; 
     else 
      std::cout << "is_directory(" << p << ") failed with " 
        << e.code().message() << '\n'; 
    } 
} 
+0

はい、本当に素晴らしいエラーメッセージになります。 – Warpin

+2

注:boost :: filesystem :: catchを必要とするかもしれません:: wfilesystemerrorは、指定したパスがwchar_t * – Warpin