首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 函数中错误捕获的有关问题?

2012-01-09 
C# 函数中异常捕获的问题????现在我有一个疑问,函数中的异常捕获问题:假如有这样一个函数FunctionA,返回值

C# 函数中异常捕获的问题????
现在我有一个疑问,函数中的异常捕获问题:假如有这样一个函数FunctionA,返回值为bool类型,那么简单的函数体应该是
  public bool FunctionA()
  {
  if(条件判断)
  {
  DoSomething...
  return true;
  }
  else
  {
  DoSomething...
  return false;
  }
  }
那么,如果我需要在这个函数里加入异常捕获,那该如何加呢?
如果写成
  public bool FunctionA()
  {
  return false;
  try
  {
  if(条件判断)
  {
  DoSomething...
  return true;
  }
  else
  {
  DoSomething...
  return false;
  }
  }
  catch(Exception ex)
  {
  MessageBox.Show(ex.Message.ToString());
  return false;
  }
  }
则编译能通过,但在try的位置会出现一个提示:检测到无法到达的代码!
像这样的问题,该如何处理其中的异常,使得编译环境也不提示错误,而且能正常编译通过呢?

[解决办法]
上来都return了当然后边的代码无效

 public bool FunctionA() 

//return false; 
try 

if(条件判断) 

DoSomething... 
return true; 

else 

DoSomething... 
return false; 


catch(Exception ex) 

MessageBox.Show(ex.Message.ToString()); 
return false; 



[解决办法]
看看代码吧
return false; 
try 

if(条件判断) 

DoSomething... 
return true; 

else 

DoSomething... 
return false; 


catch(Exception ex) 

MessageBox.Show(ex.Message.ToString()); 
return false; 

什么都没做就return了

[解决办法]
public bool FunctionA() 

return false; 
try 

if(条件判断) 

DoSomething... 
return true; 

else 

DoSomething... 
return false; 


catch(Exception ex) 

MessageBox.Show(ex.Message.ToString()); 
return false; 



你这啥代码。。刚进函数体就给return false了,下面的代码永远走不到
[解决办法]
HOHO去掉那行return false;
这应该可以通过编译的啊?

C# code
        public bool FunctionA()         {             try             {             if(条件判断)             {                 DoSomething...                 return true;             }             else             {                 DoSomething...                 return false;             }             }             catch(Exception ex)             {                 MessageBox.Show(ex.Message.ToString());                 return false;             }         } 


[解决办法]
可以把return false; 放到最后一行:
public bool FunctionA() 

try 

if(条件判断) 

DoSomething... 
return true; 

else 

DoSomething... 
return false; 


catch(Exception ex) 

MessageBox.Show(ex.Message.ToString()); 
return false; 

return false; 



这样逻辑也不会有问题

热点排行