Libmagicxx v5.5.0
A C++ wrapper library over the Magic Number Recognition Library.
 
Loading...
Searching...
No Matches
magic_exception.hpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: Copyright (c) 2022-2025 Oğuz Toraman <oguz.toraman@tutanota.com> */
2/* SPDX-License-Identifier: LGPL-3.0-only */
3
4#ifndef MAGIC_EXCEPTION_HPP
5#define MAGIC_EXCEPTION_HPP
6
7#include <format>
8#include <stdexcept>
9#include <string>
10
11namespace recognition {
12
18class magic_exception : public std::runtime_error {
19public:
20 using std::runtime_error::runtime_error;
21
29 magic_exception(const std::string& function, const std::string& error)
30 : std::runtime_error{
31 error.empty() ? function + " failed."
32 : function + " failed with " + error + "."
33 }
34 { }
35};
36
37class empty_path final : public magic_exception {
38public:
40 : magic_exception{"path is empty."}
41 { }
42};
43
44class invalid_path final : public magic_exception {
45public:
47 : magic_exception{"path is invalid."}
48 { }
49};
50
51class magic_is_closed final : public magic_exception {
52public:
54 : magic_exception{"magic is closed."}
55 { }
56};
57
58class magic_open_error final : public magic_exception {
59public:
60 explicit magic_open_error(const std::string& error)
61 : magic_exception{"magic_open", error}
62 { }
63};
64
65class magic_load_error final : public magic_exception {
66public:
68 const std::string& error,
69 const std::string& database_file_path
70 )
72 std::format("magic_load({})", database_file_path),
73 error
74 }
75 { }
76};
77
78class magic_file_error final : public magic_exception {
79public:
80 magic_file_error(const std::string& error, const std::string& file_path)
81 : magic_exception{std::format("magic_file({})", file_path), error}
82 { }
83};
84
86public:
88 const std::string& error,
89 const std::string& flag_names
90 )
91 : magic_exception{std::format("magic_set_flags({})", flag_names), error}
92 { }
93};
94
96public:
98 const std::string& error,
99 const std::string& parameter_name,
100 std::size_t value
101 )
103 std::format("magic_set_param({}, {})", parameter_name, value),
104 error
105 }
106 { }
107};
108
109} /* namespace recognition */
110
111#endif /* MAGIC_EXCEPTION_HPP */
Definition magic_exception.hpp:37
empty_path()
Definition magic_exception.hpp:39
Definition magic_exception.hpp:44
invalid_path()
Definition magic_exception.hpp:46
The base class for all exceptions thrown by the magic class.
Definition magic_exception.hpp:18
magic_exception(const std::string &function, const std::string &error)
Construct magic_exception with an error message and the name of the funtion where the error occurred.
Definition magic_exception.hpp:29
Definition magic_exception.hpp:78
magic_file_error(const std::string &error, const std::string &file_path)
Definition magic_exception.hpp:80
Definition magic_exception.hpp:51
magic_is_closed()
Definition magic_exception.hpp:53
Definition magic_exception.hpp:65
magic_load_error(const std::string &error, const std::string &database_file_path)
Definition magic_exception.hpp:67
Definition magic_exception.hpp:58
magic_open_error(const std::string &error)
Definition magic_exception.hpp:60
Definition magic_exception.hpp:85
magic_set_flags_error(const std::string &error, const std::string &flag_names)
Definition magic_exception.hpp:87
Definition magic_exception.hpp:95
magic_set_param_error(const std::string &error, const std::string &parameter_name, std::size_t value)
Definition magic_exception.hpp:97
Definition magic.hpp:17