我正在使用C#和.NET Framework 4.0开发WCF服务。
我有以下代码:
public long CreateUser(string userName)
{
try
{
if ((userName == null) ||
(userName.Equals(string.Empty)))
throw new ArgumentNullException();
...
}
catch (Exception ex)
{
resultCode = 3;
throw ex;
}
...
}
当userName == string.Empty调试器停止并且对话框说:
ArgumentNullException unhandled by user code.
我该如何解决?
更新
我想通知客户端服务器端有错误。
答案 0 :(得分:1)
使用CreateUser方法时需要处理异常:
try
{
myClass.CreateUser (user);
}
catch (ArgumentNullException ex)
{
}
答案 1 :(得分:1)
我认为最好在方法的顶部做一些这样的事情而不是创建并抛出异常。
if (string.IsNullOrEmpty(userName))
{
//handle
}
答案 2 :(得分:1)
我认为String.IsNullOrEmpty()是最清晰的方式;但我不确定我理解这个问题。
您的IF正在运作;而你的代码正在抛出异常。所以用String.IsnullOrEmpty()写它不会改变它。
你想知道如何'处理'那个例外吗?
答案 3 :(得分:1)
如果您想通知客户使用FaultException。
答案 4 :(得分:0)
处理异常: - )
这是正常行为。
您的客户必须像这样调用您的方法:
try {
long result = myService.CreateUser(someVariable);
} catch (ArgumentNullException exc)
{
// Your error-handling code here
}
如果你不想处理异常,只是处理“错误代码”(这是一种不好的做法,绝对不推荐),那么你应该删除“throw ex;”你代码中的一行。
答案 5 :(得分:0)
首先,您应该了解String.IsNullOrEmpty(),它对您提供的情况很有用。
其次,你在堆栈中抛出异常。需要一个try / catch块进一步向上捕获你正在抛出的异常。在这里,try / catch对你没有好处。
public long CreateUser(string userName)
{
if (String.IsNullOrEmpty(userName))
throw new ArgumentNullException();
...
}
然后在其他地方,
try
{
someClass.CreateUser(userName);
}
catch (ArgumentNullException ex)
{
... error handling code here
}