怎么错误了 "并非所有的代码路径都返回值"

u01055 2006-07-10 01:04:35
请大家帮我看一下函数怎么写错了,应该怎么修改呢?
  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;


}
...全文
3004 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
whui48 2006-07-11
  • 打赏
  • 举报
回复
return int//一个int 类型的返回值
_void 2006-07-11
  • 打赏
  • 举报
回复
哈哈,终于被我抓到 net_lover(孟子E章) 一次失误了

catch(Exception ex)
{
QuickMessage.MsgInfo(ex.Message);
return 0;

}

本贴的问题所在是因为没有处理
FrmQuitFind.s == null 的情况
所以导致的错误

而不是所谓catch中没有返回值

事实上C#是不推荐在catch中有返回值的
除了真的是想通过返回值来告诉上一级这里发生了异常

实际上,你想把异常告诉上一级,用throw ex; 就好
javyforoutlook 2006-07-11
  • 打赏
  • 举报
回复
FrmQuitFind.s==null时的也要返回一个int值
berlin007 2006-07-10
  • 打赏
  • 举报
回复
public int Find() //错误并非所有的代码路径都返回值
{
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;
}
这样就行了啊
shixiaoz 2006-07-10
  • 打赏
  • 举报
回复
還有
if(xxx)
{
........
}
後面也要加上return;
shixiaoz 2006-07-10
  • 打赏
  • 举报
回复
net_lover(孟子E章) ( ) 信誉:140 正解

catch 異常捕獲后就沒有返回值了。
所以要在catch裏面或者最後加上一個return;
业余程序员 2006-07-10
  • 打赏
  • 举报
回复
if(FrmQuitFind.s!=null){
-------------------------
问题出在这里,
只有IF 却没有ELSE 问题出现在这句语句上面,我看了一下你的代码,没有看到这个语句的ELSE的代码。请仔细检查一下你的代码
skywolfma 2006-07-10
  • 打赏
  • 举报
回复
多清楚的错误说明,光有if,那样就算你把情况都写全了编译器也认为有别的可能,所以就有可能无返回值。这样的最好设个变量,在最后return一下,要么就仔细点都写上,还有就是用try/catch、if/else这样的结构,不容易出这样的错误
xiaomatian 2006-07-10
  • 打赏
  • 举报
回复
不管是什么类型的都必须要有返回值,除非是void的.
u01055 2006-07-10
  • 打赏
  • 举报
回复
那么如果是string型的是不是都得有个string型的返回值呢?
u01055 2006-07-10
  • 打赏
  • 举报
回复
为什么函数返回int型的,都得有个int型的返回值呢?
cbgn 2006-07-10
  • 打赏
  • 举报
回复
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);
return 0;

}
}
return 0;

}
u01055 2006-07-10
  • 打赏
  • 举报
回复
你定义一个整形啊,在程序里先赋值,到最后来个return就不会错了----给个代码例子
u01055 2006-07-10
  • 打赏
  • 举报
回复
int s=this.Find();
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;
}
}

}
//这么改还是不行啊? : 并非所有的代码路径都返回值
yashualuohan 2006-07-10
  • 打赏
  • 举报
回复
楼上的正解,改吧。
liujiwe79 2006-07-10
  • 打赏
  • 举报
回复
你定义一个整形啊,在程序里先赋值,到最后来个return就不会错了
我看你有戏 2006-07-10
  • 打赏
  • 举报
回复
要这么多的return 干吗啊,你定义一个整形啊,在程序里先赋值,到最后来个return就不会错了
terry52 2006-07-10
  • 打赏
  • 举报
回复
catch(Exception ex)
{
QuickMessage.MsgInfo(ex.Message);

}
这里需要添加一个返回值。或者你可以throw ex.Message.让调用它的方法来获取这个错误信息
海边的狼 2006-07-10
  • 打赏
  • 举报
回复
if(FrmQuitFind.s!=null)
{
....
}
else
{
return 0;
}
TryToday 2006-07-10
  • 打赏
  • 举报
回复
if(s==1)
{
this.DialogResult = DialogResult.OK;
return 1;
}
else
{
this.DialogResult = DialogResult.None;
return 0;

}
加载更多回复(2)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧