如果您有一个大型系统,它会自动显示一个漂亮的窗口来解释捕获的异常,那么能够将错误代码与消息一起显示会很好(以供进一步调查)。但是由于某些函数调用是针对设置错误代码的失败 Windows 函数,而有些是未设置错误代码的本地失败函数,我想知道是否有办法检查最后设置的错误代码是否已“检索” “ 已经。
假设我们有一段代码
if (!CopyFile(("c:\foobar.txt", "d:\foobar.txt",FALSE))
{
throw FooBarException("bla bla bla");
}
在这里可以自动将错误代码添加到错误消息中,因为 CopyFile 是一个在失败时设置错误代码的函数。现在,我们可以在 if 语句中“手动”添加错误代码,并将其附加到创建异常时传递的错误字符串中。但是为了不必更改现有代码中的数千个位置,我们可以让FooBarException的构造函数自动获取并附加错误代码。但这也提出了有问题的问题。
如果某些未设置错误代码的代码导致引发FooBarException 怎么办。然后构造函数将GetLastError但得到一个可能根本没有连接到当前异常的错误代码。
但是,如果FooBarException的构造函数可以调用一些LastErrorRetrived(或类似的东西)并且如果在它应该忽略附加错误代码并假设它连接到更早的错误之前已经检索到错误代码并获得true 。
现在我明白了,如果在每个可能失败并设置错误代码的 Windows 函数之后实际上没有“检索”错误代码,这可能会变得混乱。但是让我们假设这已经完成。