X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fexceptions.h;h=99f0a5d8735e83c9fca7a57f8b4f2fafc40846ba;hp=3e7289a50e13e00c4c04259ff7c63bb65ba5bdce;hb=94ee305348f7d3eb548fd44ca4aa1c57645056b1;hpb=80400212e939dc2f3b987cb6df57709929aa5178 diff --git a/src/lib/exceptions.h b/src/lib/exceptions.h index 3e7289a50..99f0a5d87 100644 --- a/src/lib/exceptions.h +++ b/src/lib/exceptions.h @@ -1,19 +1,20 @@ /* - Copyright (C) 2012-2014 Carl Hetherington + Copyright (C) 2012-2020 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ @@ -24,6 +25,7 @@ #ifndef DCPOMATIC_EXCEPTIONS_H #define DCPOMATIC_EXCEPTIONS_H +#include "compose.hpp" extern "C" { #include } @@ -38,7 +40,15 @@ extern "C" { class DecodeError : public std::runtime_error { public: - DecodeError (std::string s) + explicit DecodeError (std::string s) + : std::runtime_error (s) + {} +}; + +class CryptoError : public std::runtime_error +{ +public: + explicit CryptoError (std::string s) : std::runtime_error (s) {} }; @@ -49,7 +59,7 @@ public: class EncodeError : public std::runtime_error { public: - EncodeError (std::string s) + explicit EncodeError (std::string s) : std::runtime_error (s) {} }; @@ -64,7 +74,7 @@ public: * @param f Name of the file that this exception concerns. */ FileError (std::string m, boost::filesystem::path f) - : std::runtime_error (m) + : std::runtime_error (String::compose("%1 with %2", m, f.string())) , _file (f) {} @@ -83,7 +93,7 @@ private: class JoinError : public std::runtime_error { public: - JoinError (std::string s) + explicit JoinError (std::string s) : std::runtime_error (s) {} }; @@ -94,21 +104,19 @@ public: class OpenFileError : public FileError { public: - /** @param f File that we were trying to open */ - OpenFileError (boost::filesystem::path f); -}; - -/** @class CreateFileError. - * @brief Indicates that some error occurred when trying to create a file. - */ -class CreateFileError : public FileError -{ -public: - /** @param f File that we were trying to create */ - CreateFileError (boost::filesystem::path f); + enum Mode { + READ, + WRITE, + READ_WRITE + }; + + /** @param f File that we were trying to open. + * @param error Code of error that occurred. + * @param mode Mode that we tried to open the file in. + */ + OpenFileError (boost::filesystem::path f, int error, Mode mode); }; - /** @class ReadFileError. * @brief Indicates that some error occurred when trying to read from a file */ @@ -165,7 +173,7 @@ class MissingSettingError : public SettingError { public: /** @param s Name of setting that was required */ - MissingSettingError (std::string s); + explicit MissingSettingError (std::string s); }; /** @class BadSettingError @@ -174,7 +182,9 @@ public: class BadSettingError : public SettingError { public: - /** @param s Name of setting that is bad */ + /** @param s Name of setting that is bad. + * @param m Error message. + */ BadSettingError (std::string s, std::string m) : SettingError (s, m) {} @@ -186,7 +196,7 @@ public: class NetworkError : public std::runtime_error { public: - NetworkError (std::string s) + explicit NetworkError (std::string s) : std::runtime_error (s) {} }; @@ -197,9 +207,20 @@ public: class KDMError : public std::runtime_error { public: - KDMError (std::string s) - : std::runtime_error (s) - {} + KDMError (std::string s, std::string d); + ~KDMError () throw() {} + + std::string summary () const { + return _summary; + } + + std::string detail () const { + return _detail; + } + +private: + std::string _summary; + std::string _detail; }; /** @class PixelFormatError @@ -223,7 +244,7 @@ public: class DCPError : public std::runtime_error { public: - DCPError (std::string s) + explicit DCPError (std::string s) : std::runtime_error (s) {} }; @@ -232,20 +253,43 @@ class InvalidSignerError : public std::runtime_error { public: InvalidSignerError (); + explicit InvalidSignerError (std::string reason); }; class ProgrammingError : public std::runtime_error { public: - ProgrammingError (std::string file, int line); + ProgrammingError (std::string file, int line, std::string message = ""); }; class TextEncodingError : public std::runtime_error { public: - TextEncodingError (std::string s) + explicit TextEncodingError (std::string s) + : std::runtime_error (s) + {} +}; + +class MetadataError : public std::runtime_error +{ +public: + explicit MetadataError (std::string s) : std::runtime_error (s) {} }; +class OldFormatError : public std::runtime_error +{ +public: + explicit OldFormatError (std::string s) + : std::runtime_error (s) + {} +}; + +class KDMAsContentError : public std::runtime_error +{ +public: + KDMAsContentError (); +}; + #endif