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。谢谢。