C ++问题中的例外

时间:2011-03-21 16:30:02

标签: exception c++-cli

我有这段代码:

try
{
    files = Directory::GetFiles(path);
}catch(int){ 
    MessageBox::Show("Error getting files.");
    return 0; 
}

但是当我运行它并且GetFiles崩溃时,它仍会报告未处理的异常。为什么呢?

3 个答案:

答案 0 :(得分:7)

因为您只捕获int类型的例外。

使用catch(...)来捕获任何异常。

答案 1 :(得分:2)

根据MSDNGetFiles可以抛出以下例外情况:

IOException     
UnauthorizedAccessException     
ArgumentException   
ArgumentNullException   
PathTooLongException    
DirectoryNotFoundException

你没有抓到任何一个。您捕获的唯一例外是int类型GetFiles无法抛出。要解决此问题,请为上述每个异常添加catch语句并适当地处理它们,或使用省略号来捕获所有异常:

try {
  files = Directory::GetFiles(path);
} catch(...)  {
  MessageBox::Show("Error getting files.");
  return 0; 
}

答案 2 :(得分:0)

我认为“未处理的异常”在Windows中也用于表示内存保护错误,并不总是与C ++异常相同,这就是您要在此处捕获的内容。

您传入的路径可能包含一些垃圾数据。如果路径正常,那么您需要确保捕获函数可能引发的所有类型的异常,而不仅仅是int