Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

Exception Class

class Visindigo::General::Exception

异常类,用于表示和处理程序中的异常情况。. 详情...

头文件: #include <General/Exception.h>
自以下版本: Visindigo 0.13.0

公开类型

(自 Visindigo 0.13.0 引入) enum Type { Unknown, Other, IOError, ParseError, InvalidArgument, …, Std_BadVariantAccess }

公开成员函数

(自 Visindigo 0.13.0 引入) Exception(Visindigo::General::Exception::Type type, QString message = "", bool critical = true, QString file = "", int line = 0, QString func = "", QList<Visindigo::General::StacktraceFrame> stacktrace = {})
(自 Visindigo 0.13.0 引入) Exception(const Visindigo::General::Exception &other)
(自 Visindigo 0.13.0 引入) Exception(Visindigo::General::Exception &&other)
(自 Visindigo 0.13.0 引入) virtual ~Exception()
(自 Visindigo 0.13.0 引入) QString getFile() const
(自 Visindigo 0.13.0 引入) QString getFunction() const
(自 Visindigo 0.13.0 引入) int getLine() const
(自 Visindigo 0.13.0 引入) QString getMessage() const
(自 Visindigo 0.13.0 引入) QList<Visindigo::General::StacktraceFrame> getStacktrace() const
(自 Visindigo 0.13.0 引入) Visindigo::General::Exception::Type getType() const
(自 Visindigo 0.13.0 引入) bool isCritical() const
(自 Visindigo 0.13.0 引入) QString toString() const
(自 Visindigo 0.13.0 引入) const char *what() const
(自 Visindigo 0.13.0 引入) Visindigo::General::Exception &operator=(Visindigo::General::Exception &&other)
(自 Visindigo 0.13.0 引入) Visindigo::General::Exception &operator=(const Visindigo::General::Exception &other)

静态公开成员

(自 Visindigo 0.13.0 引入) Visindigo::General::Exception fromStdException(const std::exception &e)

详细说明

Exception 类用于表示程序中的异常情况。它包含异常的类型、消息、严重性、 发生位置(文件名、行号、函数名)以及堆栈跟踪信息。

这类与std::exception无关,但可以通过fromStdException函数将std::exception转换为 此类的实例。此类也同样实现了std风格的what()函数,以便与标准异常处理机制兼容。

这类是不可变的,一旦创建,其内容就不能更改。

成员类型文档

[since Visindigo 0.13.0] enum Exception::Type

ConstantValueDescription
Visindigo::General::Exception::Unknown0x0000000未知异常类型,值为0x0000000
Visindigo::General::Exception::Other0x1其他异常类型
Visindigo::General::Exception::IOError0x2输入输出异常类型
Visindigo::General::Exception::ParseError0x3解析异常类型
Visindigo::General::Exception::InvalidArgument0x4无效参数异常类型
Visindigo::General::Exception::OutOfRange0x5越界异常类型
Visindigo::General::Exception::NotFound0x6未找到异常类型
Visindigo::General::Exception::AlreadyExists0x7已存在异常类型
Visindigo::General::Exception::PermissionDenied0x8权限拒绝异常类型
Visindigo::General::Exception::Timeout0x9超时异常类型
Visindigo::General::Exception::UnsupportedOperation0xa不支持的操作异常类型
Visindigo::General::Exception::InternalError0xb内部错误异常类型
Visindigo::General::Exception::OutOfMemory0xc内存不足异常类型
Visindigo::General::Exception::Std_Unknown0x8000000标准未知异常类型,值为0x8000000
Visindigo::General::Exception::Std_Other0x8000001标准其他异常类型
Visindigo::General::Exception::Std_LogicError0x8000002std::logic_error
Visindigo::General::Exception::Std_InvalidArgument0x8000003std::invalid_argument
Visindigo::General::Exception::Std_DomainError0x8000004std::domain_error
Visindigo::General::Exception::Std_LengthError0x8000005std::length_error
Visindigo::General::Exception::Std_OutOfRange0x8000006std::out_of_range
Visindigo::General::Exception::Std_FutureError0x8000007std::future_error
Visindigo::General::Exception::Std_RuntimeError0x8000008std::runtime_error
Visindigo::General::Exception::Std_RangeError0x8000009std::range_error
Visindigo::General::Exception::Std_OverflowError0x800000astd::overflow_error
Visindigo::General::Exception::Std_UnderflowError0x800000bstd::underflow_error
Visindigo::General::Exception::Std_RegexError0x800000cstd::regex_error
Visindigo::General::Exception::Std_SystemError0x800000dstd::system_error
Visindigo::General::Exception::Std_IOFailure0x800000estd::ios_base::failure
Visindigo::General::Exception::Std_FileSystemError0x800000fstd::filesystem::filesystem_error
Visindigo::General::Exception::Std_TXException0x8000010ISO/IEC TS 19841:2015 标准的事务异常类型,这是个技术预览内容, 目前尚未被纳入C++标准,也没有关于它的从std::exception转换到此类型的支持。
Visindigo::General::Exception::Std_LocalTimeNone0x8000011std::chrono::nonexistent_local_time
Visindigo::General::Exception::Std_LocalTimeAmbiguous0x8000012std::chrono::ambiguous_local_time
Visindigo::General::Exception::Std_FormatError0x8000013std::format_error
Visindigo::General::Exception::Std_BadTypeid0x8000014std::bad_typeid
Visindigo::General::Exception::Std_BadCast0x8000015std::bad_cast
Visindigo::General::Exception::Std_BadAnyCast0x8000016std::bad_any_cast
Visindigo::General::Exception::Std_BadOptionalAccess0x8000017std::bad_optional_access
Visindigo::General::Exception::Std_BadExpectedAccess0x8000018std::bad_expected_access
Visindigo::General::Exception::Std_BadWeakPtr0x8000019std::bad_weak_ptr
Visindigo::General::Exception::Std_BadFunctionCall0x800001astd::bad_function_call
Visindigo::General::Exception::Std_BadAlloc0x800001bstd::bad_alloc
Visindigo::General::Exception::Std_BadArrayNewLength0x800001cstd::bad_array_new_length
Visindigo::General::Exception::Std_BadException0x800001dstd::bad_exception
Visindigo::General::Exception::Std_BadVariantAccess0x800001estd::bad_variant_access

这个 enum 从 Visindigo 0.13.0 开始支持。

成员函数文档

[since Visindigo 0.13.0] Exception::Exception(Visindigo::General::Exception::Type type, QString message = "", bool critical = true, QString file = "", int line = 0, QString func = "", QList<Visindigo::General::StacktraceFrame> stacktrace = {})

构造函数,使用指定的参数创建一个异常对象。

type 异常类型。 message 异常消息本体。 critical 是否为严重异常。 file 发生异常的源文件名。 line 发生异常的行号。 func 函数名称。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] Exception::Exception(const Visindigo::General::Exception &other)

拷贝构造函数

这个 function 从 Visindigo 0.13.0 开始支持。

[noexcept, since Visindigo 0.13.0] Exception::Exception(Visindigo::General::Exception &&other)

移动构造函数

这个 function 从 Visindigo 0.13.0 开始支持。

[virtual noexcept, since Visindigo 0.13.0] Exception::~Exception()

析构函数,销毁异常对象。

这个 function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] Visindigo::General::Exception Exception::fromStdException(const std::exception &e)

e 标准异常对象 将标准异常对象转换为 Visindigo::General::Exception 对象。

由于标准异常对象的信息有限,转换后的异常对象的类型将被设置为 Unknown, 消息将包含标准异常的 what() 信息,其他信息(如文件名、行号、函数名和堆栈跟踪)将为空或默认值。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QString Exception::getFile() const

return 发生异常的源文件名

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QString Exception::getFunction() const

return 发生异常的函数名称

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] int Exception::getLine() const

return 发生异常的行号

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QString Exception::getMessage() const

return 异常消息本体

要获取全部异常信息,请使用toString()函数。

what()函数返回与此相同的内容。

这个 function 从 Visindigo 0.13.0 开始支持。

另请参阅 what() and toString().

[since Visindigo 0.13.0] QList<Visindigo::General::StacktraceFrame> Exception::getStacktrace() const

return 异常的堆栈跟踪信息

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] Visindigo::General::Exception::Type Exception::getType() const

return 异常类型

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool Exception::isCritical() const

return 异常是否为严重异常

如果程序理应立即终止,则异常应为严重异常。

推荐将所有异常都设置为严重异常,除非您非常确定异常不会影响程序的正常运行。

由于C++的灵活性,完整的异常安全性几乎无法保证,因此建议将大部分异常都视为严重异常,以确保程序的稳定性。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QString Exception::toString() const

return 将异常信息格式化为字符串表示形式。

这是个用于调试的辅助函数,Visindigo输出日志时不依赖此函数,因此调用此函数 输出的结果和在日志上看到的结果有所不同。

这个 function 从 Visindigo 0.13.0 开始支持。

[noexcept, since Visindigo 0.13.0] const char *Exception::what() const

return 异常的标准异常描述字符串。

此函数返回与getMessage()函数相同的内容。

这个 function 从 Visindigo 0.13.0 开始支持。

另请参阅 getMessage().

[noexcept, since Visindigo 0.13.0] Visindigo::General::Exception &Exception::operator=(Visindigo::General::Exception &&other)

移动赋值运算符

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] Visindigo::General::Exception &Exception::operator=(const Visindigo::General::Exception &other)

拷贝赋值运算符

这个 function 从 Visindigo 0.13.0 开始支持。