Log*_*ack 1 c# exception-handling sql-server-ce
我正在尝试在catch方法中编写一个if-else块,但是当我得到错误时"并非所有代码路径都返回int类型".
本质上,我正在编写一个将UserName和Password保存到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
}
Run Code Online (Sandbox Code Playgroud)
我试过显示一个不同的,更通用的消息,并获得无返回错误.我已经尝试抛出一个新的异常并在另一个块中捕获它.同样的错误.我试过返回-1(作为一种标志值).同样的错误.
对于这种特殊情况,似乎没有比SqlCeException更具体的错误(虽然我刚刚失败了我的debug-fu).
任何创造性的解决方案?最糟糕的情况是,我会编写一个方法,在调用此方法之前检查DB是否有重复的用户名.
看起来你的方法返回了一个int.您需要int从catch块返回type的值.
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
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4712 次 |
| 最近记录: |