在定义变量、为它们分配空间、初始化它们然后正确清理所有内容时,我想就 C# 中的良好编程实践征求您的意见。
我目前面临的问题是,我有一个使用非托管 API 函数的函数,因此也访问了非托管内存(使用了编组)。我想让功能干净并在退出之前正确处理所有内容。但问题是,所有实际工作都是在try-catch块中完成的。这意味着我无法在catch或finally块中清理所有内容。
我所做的是声明所有变量,为它们保留内存并在进入函数后立即初始化它们,然后在finally块中清理所有内容(关闭句柄,释放内存,...)。
一切都很好,但我还希望在try块中完成变量声明、初始化和内存分配(例如,在初始化数组或在内存中分配空间或天知道在哪里时也会出错)。唯一想到的是嵌套两个try-catch块。这样可以吗,还是您会提出其他建议?
这是我到目前为止所拥有的:
//Declare variables, allocate memory, initialize variables.
........
try
{
//Do actual work - write to file and read from a file in my case
.........
}
catch (Exception exc)
{
//Exception handler for file write/read errors
}
finally
{
//Clean up (release handles, free memory,...)
}
这就是我的想法:
try
{
//Declare variables, allocate memory, initialize variables.
........
try
{
//Do actual work - write to file and read from a file in my case
.........
}
catch (Exception exc)
{
//Exception handler for file write/read errors
}
}
catch (Exception exc_1)
{
//Exception handler for variable declaration, initialization, memory allocation errors
}
finally
{
//Clean up (release handles, free memory,...)
}
提前感谢您的所有帮助!
干杯!