在Windows 驱动程序工具包 (WDK)中,有一些用纯 C 编写的驱动程序代码示例,但散布着一些 try-catch-finally 结构。有人知道它们的语义吗?感谢微软提供的出色工具和标准合规性。
代码摘录自some_file.c:
try {
...
if (!NT_SUCCESS( status )) {
leave; // ???
}
...
} finally {
...
}
try {
...
} except( EXCEPTION_EXECUTE_HANDLER ) {
...
}
Run Code Online (Sandbox Code Playgroud)
WDK 中的 try/ except 处理遵循整个 Windows 中使用的 SEH 模型。请注意,您可以在捕获异常后继续。
该模型早于 C++,因此 C++ 标准与 Win32 使用的异常模型不同。
PS:C 没有异常处理,因此 SEH 是 C 的非标准扩展。