Give a better error if a specified CPL does not exist.
[dcpomatic.git] / src / lib / exceptions.h
index 9b7837a46bef89c695f0be7097a254566b8d8939..618a03f4326510c8e532481ce899a7fb1dfcf18e 100644 (file)
@@ -253,9 +253,19 @@ public:
 class NetworkError : public std::runtime_error
 {
 public:
-       explicit NetworkError (std::string s)
-               : std::runtime_error (s)
-       {}
+       explicit NetworkError (std::string s, boost::optional<std::string> d = boost::optional<std::string>());
+
+       std::string summary () const {
+               return _summary;
+       }
+
+       boost::optional<std::string> detail () const {
+               return _detail;
+       }
+
+private:
+       std::string _summary;
+       boost::optional<std::string> _detail;
 };
 
 
@@ -325,6 +335,15 @@ public:
 };
 
 
+class CPLNotFoundError : public DCPError
+{
+public:
+       CPLNotFoundError(std::string id)
+               : DCPError(String::compose("CPL %1 not found", id))
+       {}
+};
+
+
 class InvalidSignerError : public std::runtime_error
 {
 public:
@@ -406,7 +425,7 @@ private:
 
 
 /** @class CommunicationFailedError
- *  @brief Communcation between dcpomatic2_disk and _disk_writer failed somehow.
+ *  @brief Communication between dcpomatic2_disk and _disk_writer failed somehow.
  */
 class CommunicationFailedError : public CopyError
 {