我正在使用旧的系统将代码从VB转换为C#,该系统使用Web表单的基类来继承类。我希望为我们的新外联网建立一个新的登录,其功能类似于旧系统,我可能错过了一步,但这里是我试图转换的块。
public bool CheckAD()
{
string fncADStatus = "Failure";
string fncSuccess = "Success";
string fncFailure = "Failure";
fncADStatus = Convert.ToString(Session["SessionADStatus"]);
try
{
if (fncADStatus == fncSuccess)
{
return true;
}
}
catch
{
if (fncADStatus == fncFailure)
{
return false;
}
if (Session["SessionADStatus"] == null)
{
return false;
}
}
}
我收到以下错误“并非所有代码路径返回值”但我不太明白为什么。
答案 0 :(得分:1)
并非catch
块中的所有代码路径都返回结果。通常,你会写这样的东西
public bool CheckAD()
{
try {...}
catch
{
if (fncADStatus == fncFailure)
{
logger.Debug("One");
}
if (Session["SessionADStatus"] == null)
{
logger.Debug("Two");
}
return false; // <<<<< This bit is missing in your case
}
}
答案 1 :(得分:1)
它会给你错误,因为你没有提到其他的声明;如果条件落入其他地方,将不会返回任何内容做以下事情不会给你错误。
public bool CheckAD() {
string fncADStatus = "Failure";
string fncSuccess = "Success";
string fncFailure = "Failure";
fncADStatus = Convert.ToString(Session["SessionADStatus"]);
try
{
Boolean output = false;
if (fncADStatus == fncSuccess)
{
output = true;
}
return output;
}
catch
{
Boolean output = true;
if (fncADStatus == fncFailure)
{
output = false;
}
if (Session["SessionADStatus"] == null)
{
output = false;
}
return output;
}
}