Error.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * Copyright (c) 2022, Matthew Olsson <mattco@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/String.h>
  8. namespace PDF {
  9. class Error {
  10. public:
  11. enum class Type {
  12. Parse,
  13. Internal,
  14. MalformedPDF,
  15. };
  16. Error(AK::Error error)
  17. : m_type(Type::Internal)
  18. , m_message(String::formatted("Internal error while processing PDF file: {}", error.string_literal()))
  19. {
  20. }
  21. Error(Type type, String const& message)
  22. : m_type(type)
  23. {
  24. switch (type) {
  25. case Type::Parse:
  26. m_message = String::formatted("Failed to parse PDF file: {}", message);
  27. break;
  28. case Type::Internal:
  29. m_message = String::formatted("Internal error while processing PDF file: {}", message);
  30. break;
  31. case Type::MalformedPDF:
  32. m_message = String::formatted("Malformed PDF file: {}", message);
  33. break;
  34. }
  35. }
  36. Type type() const { return m_type; }
  37. String const& message() const { return m_message; }
  38. private:
  39. Type m_type;
  40. String m_message;
  41. };
  42. template<typename T>
  43. using PDFErrorOr = ErrorOr<T, Error>;
  44. }