请大家帮我看一下函数怎么写错了,应该怎么修改呢?
public int Find() //错误并非所有的代码路径都返回值
{
if(FrmQuitFind.s!=null)
{
custds = findFacade.GetFindData(sql);
try
{
custds = findFacade.GetFindData(sql);
if(0 == custds.Tables[0].Rows.Count)
{
return 0;
}
else
{
return 1;
}
}
catch(Exception ex)
{
QuickMessage.MsgInfo(ex.Message);
}
}
============================================================
if(s==1)
{
this.DialogResult = DialogResult.OK;
}
else
{
this.DialogResult = DialogResult.None;
}
public int Find() //错误并非所有的代码路径都返回值
{
if(FrmQuitFind.s!=null)
{
custds = findFacade.GetFindData(sql);
try
{
custds = findFacade.GetFindData(sql);
if(0 == custds.Tables[0].Rows.Count)
{
return 0;
}
else
{
return 1;
}
}
catch(Exception ex)
{
QuickMessage.MsgInfo(ex.Message);
}
}
============================================================
if(s==1)
{
this.DialogResult = DialogResult.OK;
}
else
{
this.DialogResult = DialogResult.None;
}
{
QuickMessage.MsgInfo(ex.Message);
return 0;
}
{
this.DialogResult = DialogResult.OK;
return 1;
}
else
{
this.DialogResult = DialogResult.None;
return 0;
}
{
....
}
else
{
return 0;
}
{
QuickMessage.MsgInfo(ex.Message);
}
这里需要添加一个返回值。或者你可以throw ex.Message.让调用它的方法来获取这个错误信息
if(s==1)
{
this.DialogResult = DialogResult.OK;
}
else
{
this.DialogResult = DialogResult.None;
}
}
}
----------------------------------------------------------------------------------
public int Find()
{
if(FrmQuitFind.s!=null)
{
findFacade = new FindFacade();
custds = findFacade.GetFindData(sql);
try
{
custds = findFacade.GetFindData(sql);
if(0 == custds.Tables[0].Rows.Count)
{
return 0;
}
else
{
return 1;
}
}
catch(Exception ex)
{
QuickMessage.MsgInfo(ex.Message);
return 0;
}
}
}
//这么改还是不行啊? : 并非所有的代码路径都返回值
{
if(FrmQuitFind.s!=null)
{
custds = findFacade.GetFindData(sql);
try
{
custds = findFacade.GetFindData(sql);
if(0 == custds.Tables[0].Rows.Count)
{
return 0;
}
else
{
return 1;
}
}
catch(Exception ex)
{
QuickMessage.MsgInfo(ex.Message);
return 0;
}
}
return 0; }
-------------------------
问题出在这里,
只有IF 却没有ELSE 问题出现在这句语句上面,我看了一下你的代码,没有看到这个语句的ELSE的代码。请仔细检查一下你的代码
所以要在catch裏面或者最後加上一個return;
if(xxx)
{
........
}
後面也要加上return;
{
int inti ;
if(FrmQuitFind.s!=null)
{
custds = findFacade.GetFindData(sql);
try
{
custds = findFacade.GetFindData(sql);
if(0 == custds.Tables[0].Rows.Count)
{
inti =0;
}
else
{
inti =1;
}
}
catch(Exception ex)
{
QuickMessage.MsgInfo(ex.Message);
inti = -1
}
return inti;
}
这样就行了啊
{
QuickMessage.MsgInfo(ex.Message);
return 0;}本贴的问题所在是因为没有处理
FrmQuitFind.s == null 的情况
所以导致的错误而不是所谓catch中没有返回值事实上C#是不推荐在catch中有返回值的
除了真的是想通过返回值来告诉上一级这里发生了异常实际上,你想把异常告诉上一级,用throw ex; 就好