下面的代碼應該在理想的情況下執行一個標量的SQL命令:的try-catch-最後並非所有的代碼路徑返回一個值
public object AsScalar()
{
SqlCommand cmd = CreateSqlCommand();
try
{
cmd.Connection.Open();
return cmd.ExecuteScalar();
}
catch (Exception exc)
{
log.Error("Exception caught for command: "+_sql, exc);
}
finally
{
Done(cmd);
}
}
不過,我收到以下錯誤從Visual Studio 2010:
not all code paths return a value
我認爲在try-catch-finally中它總是會執行finally語句,不管是否有異常被捕獲,但似乎並非如此。
爲什麼添加catch子句會導致這個錯誤,當try-finally的工作沒有問題?
您需要有一個默認返回子句;編譯器認識到你的'try'塊可能會失敗。除此之外,您不會返回任何值(或拋出異常)。 – 48klocs
「finally」和「catch」都不會返回任何內容...... – JLRishe