Changes
This commit is contained in:
+36
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// Created by EmsiaetKadosh on 25-1-18.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
class Exception : public std::exception {
|
||||
const String* type;
|
||||
|
||||
protected:
|
||||
String msg;
|
||||
|
||||
Exception(String&& msg, const String* type) : type(type), msg(std::move(msg)) {}
|
||||
Exception(const String& msg, const String* type) : type(type), msg(msg) {}
|
||||
|
||||
public:
|
||||
[[nodiscard]] String getMessage() const noexcept { return msg; }
|
||||
[[nodiscard]] const String* getType() const noexcept { return type; }
|
||||
[[nodiscard]] const char* what() const override { return "Use Exception::getMessage() instead.";}
|
||||
};
|
||||
|
||||
class NullPointerException final : public Exception {
|
||||
inline static const String type = L"NullPointerException";
|
||||
|
||||
public:
|
||||
explicit NullPointerException(String&& msg) : Exception(std::move(msg), &type) {}
|
||||
explicit NullPointerException(const String& msg) : Exception(msg, &type) {}
|
||||
};
|
||||
|
||||
class ArrayIndexOutOfBoundException final : public Exception {
|
||||
inline static const String type = L"ArrayIndexOutOfBoundException";
|
||||
|
||||
public:
|
||||
explicit ArrayIndexOutOfBoundException(String&& msg) : Exception(std::move(msg), &type) {}
|
||||
explicit ArrayIndexOutOfBoundException(const String& msg) : Exception(msg, &type) {}
|
||||
};
|
||||
Reference in New Issue
Block a user