我試圖在catch方法中編寫一個if-else塊,但是當我得到'不是所有代碼路徑都返回類型爲int的錯誤'。c#if-else在catch語句中
本質上,我正在寫一個方法將用戶名和密碼保存到Sql CE數據庫,並且我想測試一個特定的錯誤。 (UserName已存在。)UserName列是唯一的,所以它會可靠地拋出一個帶有NativeError = 25016的SqlCeException異常。我想用錯誤消息顯示它,否則以更通用的方式處理其他異常。
我的代碼是:
try
{
//insert command (This is where the duplicate column error is thrown)
//Select @@Identity & Return it
}
catch (SqlCeException ex)
{
if (ex.NativeError == 25016)
MessageBox.Show("Username already in use.");
else
//whatever
}
我試圖呈現出不同的,更通用的消息,並得到了不歸路錯誤。 我試着拋出一個新的異常並將它捕獲到另一個塊中。同樣的錯誤。 我試過返回-1(作爲一種標誌值)。同樣的錯誤。
在這個特定情況下,似乎沒有比SqlCeException更具體的錯誤(儘管我可能只是失敗了我的調試功能)。
任何創造性的變通? 最壞的情況下,我會寫一個方法,在調用此方法之前檢查數據庫是否有重複的用戶名。
您提到的錯誤消息是關於函數的返回值,並且沒有顯示在您共享的代碼中。 – SAJ14SAJ
插入後,我選擇插入的表的@@標識,然後返回。 我發現關閉這個錯誤的唯一辦法是把「throw ex;」在catch塊中沒有別的東西。 我只是一名學生,並不擅長Try-Catch。有任何想法嗎? –
已經回答的其他人已經獲得了它的核心 - 即使在調用catch-clause時也需要返回值。 – SAJ14SAJ