我正在尝试在 catch 方法中编写一个 if-else 块,但是当我收到“并非所有代码路径都返回 int 类型”的错误时。
本质上,我正在编写一种将用户名和密码保存到 Sql CE 数据库的方法,并且我想测试一个特定的错误。(用户名已经存在。)用户名列是唯一的,所以它会可靠地抛出一个带有 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 更具体的错误(尽管我可能刚刚让我调试失败)。
有什么创造性的变通方法吗?最坏的情况是,我将编写一个方法,在调用此方法之前检查数据库中是否存在重复的用户名。