[英]WCF unhandled exception by user code
我正在使用 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.
我該如何解決?
更新
我想通知客戶端服務器端出現錯誤。
使用 CreateUser 方法時需要處理異常:
try
{
myClass.CreateUser (user);
}
catch (ArgumentNullException ex)
{
}
我認為最好在方法的頂部做這樣的事情,而不是創建並拋出異常。
if (string.IsNullOrEmpty(userName))
{
//handle
}
我認為 String.IsNullOrEmpty() 是最清晰的方法; 但我不確定我是否理解這個問題。
您的 IF 正在工作; 並且您的代碼正在引發異常。 所以用 String.IsnullOrEmpty() 寫它不會改變這一點。
您想知道如何“處理”該異常嗎?
如果你想通知客戶端使用FaultException 。
處理異常:-)
這是正常行為。
您的客戶必須像這樣調用您的方法:
try {
long result = myService.CreateUser(someVariable);
} catch (ArgumentNullException exc)
{
// Your error-handling code here
}
如果您不想處理異常,而只是處理“錯誤代碼”(這是一種不好的做法,絕對不推薦),那么您應該刪除“throw ex;” 從你的代碼行。
首先,您應該了解 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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.