X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fexceptions.h;h=5cbf6994154dadaeda169130cd82ac2ddaf48637;hp=c64f561a837ef478322fa53053ee8c5c8495adb1;hb=89952bc64f5ae1b075b653f8a9daa02fd8d90260;hpb=da908d815787cd0272c8bdeef40e1a4d2f6a29f8 diff --git a/src/lib/exceptions.h b/src/lib/exceptions.h index c64f561a8..5cbf69941 100644 --- a/src/lib/exceptions.h +++ b/src/lib/exceptions.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2020 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,21 +18,25 @@ */ + /** @file src/lib/exceptions.h * @brief Our exceptions. */ + #ifndef DCPOMATIC_EXCEPTIONS_H #define DCPOMATIC_EXCEPTIONS_H + #include "compose.hpp" extern "C" { #include } #include #include -#include #include +#include + /** @class DecodeError * @brief A low-level problem with the decoder (possibly due to the nature @@ -44,8 +48,25 @@ public: explicit DecodeError (std::string s) : std::runtime_error (s) {} + + DecodeError (std::string function, std::string caller) + : std::runtime_error (String::compose("%1 failed [%2]", function, caller)) + {} + + DecodeError (std::string function, std::string caller, int error) + : std::runtime_error (String::compose("%1 failed [%2] (%3)", function, caller, error)) + {} + + DecodeError (std::string function, std::string caller, boost::filesystem::path file) + : std::runtime_error (String::compose("%1 failed [%2] (%3)", function, caller, file.string())) + {} + + DecodeError (std::string function, std::string caller, int error, boost::filesystem::path file) + : std::runtime_error (String::compose("%1 failed [%2] (%3) (%4)", function, caller, error, file.string())) + {} }; + class CryptoError : public std::runtime_error { public: @@ -54,6 +75,7 @@ public: {} }; + /** @class EncodeError * @brief A low-level problem with an encoder. */ @@ -63,8 +85,17 @@ public: explicit EncodeError (std::string s) : std::runtime_error (s) {} + + explicit EncodeError (std::string function, std::string caller) + : std::runtime_error (String::compose("%1 failed [%2]", function, caller)) + {} + + explicit EncodeError (std::string function, std::string caller, int error) + : std::runtime_error (String::compose("%1 failed [%2] (%3)", function, caller, error)) + {} }; + /** @class FileError. * @brief Parent class for file-related errors. */ @@ -91,6 +122,7 @@ private: boost::filesystem::path _file; }; + class JoinError : public std::runtime_error { public: @@ -99,6 +131,7 @@ public: {} }; + /** @class OpenFileError. * @brief Indicates that some error occurred when trying to open a file. */ @@ -118,6 +151,7 @@ public: OpenFileError (boost::filesystem::path f, int error, Mode mode); }; + class FileNotFoundError : public std::runtime_error { public: @@ -134,6 +168,7 @@ private: boost::filesystem::path _file; }; + /** @class ReadFileError. * @brief Indicates that some error occurred when trying to read from a file */ @@ -146,6 +181,7 @@ public: ReadFileError (boost::filesystem::path f, int e = 0); }; + /** @class WriteFileError. * @brief Indicates that some error occurred when trying to write to a file */ @@ -158,6 +194,7 @@ public: WriteFileError (boost::filesystem::path f, int e); }; + /** @class SettingError. * @brief Indicates that something is wrong with a setting. */ @@ -183,6 +220,7 @@ private: std::string _setting; }; + /** @class MissingSettingError. * @brief Indicates that a Film is missing a setting that is required for some operation. */ @@ -193,6 +231,7 @@ public: explicit MissingSettingError (std::string s); }; + /** @class BadSettingError * @brief Indicates that a setting is bad in some way. */ @@ -207,6 +246,7 @@ public: {} }; + /** @class NetworkError * @brief Indicates some problem with communication on the network. */ @@ -218,6 +258,7 @@ public: {} }; + /** @class KDMError * @brief A problem with a KDM. */ @@ -240,6 +281,7 @@ private: std::string _detail; }; + /** @class PixelFormatError * @brief A problem with an unsupported pixel format. */ @@ -249,6 +291,7 @@ public: PixelFormatError (std::string o, AVPixelFormat f); }; + /** @class TextSubtitleError * @brief An error that occurs while parsing a TextSubtitleError file. */ @@ -258,6 +301,7 @@ public: TextSubtitleError (std::string, std::string, boost::filesystem::path); }; + class DCPError : public std::runtime_error { public: @@ -289,11 +333,13 @@ public: }; class ProgrammingError : public std::runtime_error + { public: ProgrammingError (std::string file, int line, std::string message = ""); }; + class TextEncodingError : public std::runtime_error { public: @@ -302,6 +348,7 @@ public: {} }; + class MetadataError : public std::runtime_error { public: @@ -310,6 +357,7 @@ public: {} }; + class OldFormatError : public std::runtime_error { public: @@ -318,18 +366,21 @@ public: {} }; + class KDMAsContentError : public std::runtime_error { public: KDMAsContentError (); }; + class GLError : public std::runtime_error { public: GLError (char const * last, int e); }; + /** @class CopyError * @brief An error which occurs when copying a DCP to a distribution drive. */ @@ -394,4 +445,5 @@ public: {} }; + #endif