警告级别4中无法访问的代码警告

时间:2015-03-19 06:05:05

标签: c++

有人可以解释一下为什么这会为*a=9;行提供无法访问的代码警告。 我正在使用VS2015预览和警告级别4

int main(){
int* a = foo();
try{
 *a = 5;
}catch(int)
{
 *a=9;
}
  return 0;
}

2 个答案:

答案 0 :(得分:2)

这为*a=9提供了无法访问的代码警告,因为您的编译器知道try块中的代码永远不会抛出任何类型的异常。所以你的catch块永远不会执行。

当代码容易引发异常时使用try / catch。

答案 1 :(得分:2)

无法访问的原因是因为您的代码片段* a = 5不能抛出异常。它可能会产生访问冲突(例如,如果foo返回nullptr),但不会将其作为C ++异常处理。

如果这是你想要的东西,你可以使用__try / __来捕获访问冲突,但我认为你应该只在特殊情况下使用它。

https://msdn.microsoft.com/en-us/library/s58ftw19%28v=vs.80%29.aspx?f=255&MSPPError=-2147217396

相关问题