我是 C++/CX 任务的新手,这让我抓狂。以下代码生成异常“无效参数已传递给认为无效参数致命的函数”。我知道它成功地创建了文件并进入了该任务的继续(或至少达到了在那里定义的断点),并且我 99% 确定(基于以前的工作)由于文件不是导致 XmlDocument::LoadFromFile 方法崩溃的有效 XML。我想尝试实际捕获该异常,因此我构建了几个 MSDN 文档中定义的错误处理延续。(第二个样本)
TEST_METHOD(The_storage_file_must_reference_a_valid_xml_file)
{
auto folder = ApplicationData::Current->LocalFolder;
auto createFileTask =
create_task(ApplicationData::Current->LocalFolder->CreateFileAsync("TestFile.txt", CreationCollisionOption::ReplaceExisting))
.then([this] (StorageFile^ file)
{
XmlLoadSettings^ loadSettings = ref new XmlLoadSettings();
loadSettings->ProhibitDtd = false;
loadSettings->ResolveExternals = false;
auto loadXmlDocumentTask =
create_task(XmlDocument::LoadFromFileAsync(file, loadSettings))
.then([this] (XmlDocument^ doc)
{
int x = 99;
});
});
}
这是带有错误继续的代码....
TEST_METHOD(The_storage_file_must_reference_a_valid_xml_file)
{
auto cut = ref new CategoryDataLoadBuilder();
auto folder = ApplicationData::Current->LocalFolder;
auto createFileTask =
create_task(ApplicationData::Current->LocalFolder->CreateFileAsync("TestFile.txt", CreationCollisionOption::ReplaceExisting))
.then([this] (StorageFile^ file)
{
XmlLoadSettings^ loadSettings = ref new XmlLoadSettings();
loadSettings->ProhibitDtd = false;
loadSettings->ResolveExternals = false;
auto loadXmlDocumentTask =
create_task(XmlDocument::LoadFromFileAsync(file, loadSettings))
.then([this] (task<XmlDocument^> t)
{
try
{
t.get();
}
catch (COMException^ ex)
{
int x = 99;
}
});
});
}
当我尝试调试这个测试时,我在测试引擎中遇到了访问冲突,而且通常情况下,调试器似乎只是陷入了困境。
我是否误解了错误延续的工作原理?它在 VS 测试引擎中不起作用吗?有没有更好的方法来检查当 XML 文件错误时生成的“真实”异常,我可以在我的测试中显式检查?
提前致谢