diff --git a/include/inja/inja.hpp b/include/inja/inja.hpp index 86b8a0a..92b6345 100644 --- a/include/inja/inja.hpp +++ b/include/inja/inja.hpp @@ -10,6 +10,9 @@ #else #include #define INJA_THROW(exception) std::abort() + #ifndef INJA_NOEXCEPTION + #define INJA_NOEXCEPTION + #endif #endif #include "environment.hpp" diff --git a/include/inja/utils.hpp b/include/inja/utils.hpp index fb1736c..836425d 100644 --- a/include/inja/utils.hpp +++ b/include/inja/utils.hpp @@ -15,11 +15,15 @@ namespace inja { inline void open_file_or_throw(const std::string &path, std::ifstream &file) { file.exceptions(std::ifstream::failbit | std::ifstream::badbit); +#ifndef INJA_NOEXCEPTION try { file.open(path); } catch (const std::ios_base::failure & /*e*/) { INJA_THROW(FileError("failed accessing file at '" + path + "'")); } +#else + file.open(path); +#endif } namespace string_view { diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp index cdca7e1..a69457b 100644 --- a/single_include/inja/inja.hpp +++ b/single_include/inja/inja.hpp @@ -10,6 +10,9 @@ #else #include #define INJA_THROW(exception) std::abort() + #ifndef INJA_NOEXCEPTION + #define INJA_NOEXCEPTION + #endif #endif // #include "environment.hpp" @@ -1842,11 +1845,15 @@ namespace inja { inline void open_file_or_throw(const std::string &path, std::ifstream &file) { file.exceptions(std::ifstream::failbit | std::ifstream::badbit); +#ifndef INJA_NOEXCEPTION try { file.open(path); } catch (const std::ios_base::failure & /*e*/) { INJA_THROW(FileError("failed accessing file at '" + path + "'")); } +#else + file.open(path); +#endif } namespace string_view {