Exception C+中的例外情况+;问题
我有以下代码:Exception C+中的例外情况+;问题,exception,c++-cli,Exception,C++ Cli,我有以下代码: try { files = Directory::GetFiles(path); }catch(int){ MessageBox::Show("Error getting files."); return 0; } 但是当我运行它并且GetFiles崩溃时,它仍然报告未处理的异常。为什么?因为您只捕获类型为int的异常 < >使用 catch(…)>代码>捕捉任何异常。我相信“未处理异常”也被用于Windows中的内存保护错误,并且并不总是与C++异
try
{
files = Directory::GetFiles(path);
}catch(int){
MessageBox::Show("Error getting files.");
return 0;
}
但是当我运行它并且
GetFiles
崩溃时,它仍然报告未处理的异常。为什么?因为您只捕获类型为int
的异常
< >使用<代码> catch(…)>代码>捕捉任何异常。我相信“未处理异常”也被用于Windows中的内存保护错误,并且并不总是与C++异常相同的东西,这就是您在这里尝试捕获的。
可能您正在传递的路径中有一些垃圾数据。如果路径正常,则需要确保捕获函数可能引发的所有类型的异常,而不仅仅是int
根据,GetFiles
可以引发以下异常:
IOException
UnauthorizedAccessException
ArgumentException
ArgumentNullException
PathTooLongException
DirectoryNotFoundException
try {
files = Directory::GetFiles(path);
} catch(...) {
MessageBox::Show("Error getting files.");
return 0;
}
你一个也抓不到。您捕获的唯一异常是int
类型,它不能由GetFiles
引发。要解决此问题,请为上述每个异常添加catch语句并进行适当处理,或者使用省略号捕获所有异常:
IOException
UnauthorizedAccessException
ArgumentException
ArgumentNullException
PathTooLongException
DirectoryNotFoundException
try {
files = Directory::GetFiles(path);
} catch(...) {
MessageBox::Show("Error getting files.");
return 0;
}
在catch(…)中,使用正确的对应异常类型,而不是int?整型指针?不是int的东西?我以为所有例外都可以转换为int。谢谢。