C#中返回布尔值的连接检测函数报代码路径无返回值错误如何解决
问题原因
你遇到的编译报错:
not all code paths return value(并非所有代码路径都返回值)
是以下两个代码缺陷导致的:
- 当
JvarConn.State不等于ConnectionState.Closed时,try块内的if分支不会触发,此时既没有进入catch分支,也没有执行任何return语句,存在无返回值的代码路径 - catch块内
return false语句写在了MessageBox.Show之前,return执行后会直接退出方法,弹窗代码永远无法运行,属于逻辑错误
修正方案
调整代码覆盖所有返回路径,同时调整catch内的代码顺序即可,修正后代码如下:
public bool CheckConn() { try { if (JvarConn.State == ConnectionState.Closed) { JvarConn.Open(); } // 连接处于打开状态、或打开成功都返回true return true; } catch { MessageBox.Show("No Connection"); return false; } }
内容的提问来源于stack exchange,提问作者Hamada
相关产品推荐
相关产品推荐

