我过去通常没有使用过异常(我禁用它们),但是对于 C++Builder,有一些配置可以使用它。所以我会接受它,但你怎么知道例外是什么,所以你知道你想用它做什么?
返回错误代码或 NULL 或 FALSE 的旧方法很容易了解代码,因为它们通常用函数记录代码,但我发现除了例外情况,实际上没有关于它们的信息记录在方法/命令中。
TFDSQLiteSecurity.SetPassword()
函数,我怎么知道有什么异常(返回)代码来响应它们?我没有看到他们列出?
除非有记录,否则知道抛出什么type异常的唯一方法是在运行时实际catch它并询问它的类型。或者查看库源代码(如果可用)。
关于异常的事情是你并不总是需要知道它们是什么,只需要知道它们被抛出完全.
Sysutils::Exception
、std::exception
等),因此通常只通过其基类捕获异常就足够了,而不是特定的派生类。仅当您想以不同于其他异常的方式处理 specific 异常,或者如果您需要访问特定于异常的详细信息(例如用于日志记录目的)时,您才需要知道异常的特定 type。
在任何情况下,在您的特定示例中,所有 FireDAC 异常都派生自
EFDException
类,该类具有 FDCode
属性,其中包含 FireDAC 错误代码。而DBMS特定的FireDAC异常是从EFDDBEngineException
派生的,它有几个描述数据库错误的属性,包括ErrorCode
,失败的SQL
和它的Params
等
并非所有异常都按方法记录。有时错误文档更加集中。例如,有关 FireDAC 异常的更多详细信息,请参阅Handling Errors (FireDAC) 文档。