2010-03-12 110 views
0

我已經創建了業務層自定義異常,並利用我在哪裏調用業務層的方法,然後在另一個網站我打電話從WCF方法WCF層。我可以看到我在自定義異常中寫入的消息,但是當我將鼠標懸停在異常情況下時,我看到了我的消息,但是該程序在異常情況下(第二個catch塊)而不是點擊第一個catch塊(自定義異常)裏面有一些我不熟悉的faultexception。並在那裏的細節..在這裏我看到類型= CanOnlyApplyOnceException。這裏是我的代碼:不能得到catch語句捕捉自定義異常

protected void AddNewApplication() 
    { 
     try 
     { 
      using (var proxy = new ServiceReference1.ServiceClient()) 
      { 
       proxy.AddApplication(new Application 
       { 
        Credentials = 2, 
        Comments = txtComments.Text, 
       }); 
      } 
     } 
     catch (CanOnlyApplyOnceException c) 
     { 
      ErrorSummary.AddError(c.Message, this); 
      return; 
     } 
     catch (Exception) 
     { 
      lblStatus.Text = "There has been an error. Please try again"; 
     } 
    } 
+0

當你看到一個類型,你是不熟悉的,做的第一件事就是檢查MSDN。 – SLaks 2010-03-12 02:32:15

+0

我這樣做,花時間做什麼,我在MSDN中找到,但沒有工作 – user282807 2010-03-12 02:37:11

+0

他們說的不是拋出這樣的:拋出新Canonlyapplyoneexception不拋出新的FaultException (新canonlyapplyonceexception(消息)......我做到了但didnt解決問題 – user282807 2010-03-12 02:39:26

回答

1

你需要做兩件事情:

  1. 你的方法聲明添加FaultContract屬性在這樣的WCF服務:

    
    [OperationContract] 
    [FaultContract((typeof(CanOnlyApplyOnceException))] 
    void AddApplication(Application your_variable_name); 
    

釷確保拋出CanOnlyApplyOnceException類型的異常。

  • 更改您的catch塊這樣的:

    catch (FaultException<CanOnlyApplyOnceException> c) 
    
  • 0

    FaultException如果服務拋出異常,則拋出客戶端。

    根據不同的服務,你可以寫

    catch (FaultException<CanOnlyApplyOnceException> c) 
        { 
         ErrorSummary.AddError(c.Detail.Message, this); 
         return; 
        } 
    
    +0

    是啊,我這樣做已經和仍然去直接例外。 – user282807 2010-03-12 02:36:22

    +0

    然後,你需要趕上非通用'FaultException'。 – SLaks 2010-03-12 02:38:54

    +0

    這是例外中的細節{「你只能申請一次!」}系統。 ServiceModel.FaultException ]:{「您只能申請一次」}數據:{System.Collections.ListDictionaryInternal} HelpLink:null InnerException:null消息:「您只能申請一次」來源:「mscorlib」並且CanOnlyApplyOnce類型也在這裏詳細說明如何獲得類型? – user282807 2010-03-12 03:28:05