簡體   English   中英

WCF 用戶代碼未處理的異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM