FaultException 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示 SOAP 錯誤。
public ref class FaultException : System::ServiceModel::CommunicationException
public class FaultException : System.ServiceModel.CommunicationException
[System.Serializable]
public class FaultException : System.ServiceModel.CommunicationException
[System.Serializable]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData[]))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData[]))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData))]
public class FaultException : System.ServiceModel.CommunicationException
type FaultException = class
inherit CommunicationException
[<System.Serializable>]
type FaultException = class
inherit CommunicationException
[<System.Serializable>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData[]))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData[]))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData))>]
type FaultException = class
inherit CommunicationException
Public Class FaultException
Inherits CommunicationException
- 繼承
- 繼承
- 衍生
- 屬性
範例
下列程式碼範例示範如何使用 try/catch 區塊來攔截並處理從服務擲回的 FaultException 物件。 當服務應用程式開啟偵錯時,常會發生此情況。
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using Microsoft.WCF.Documentation;
public class Client
{
public static void Main()
{
// Picks up configuration from the configuration file.
SampleServiceClient wcfClient = new SampleServiceClient();
try
{
// Making calls.
Console.WriteLine("Enter the greeting to send: ");
string greeting = Console.ReadLine();
Console.WriteLine("The service responded: " + wcfClient.SampleMethod(greeting));
Console.WriteLine("Press ENTER to exit:");
Console.ReadLine();
}
catch (TimeoutException timeProblem)
{
Console.WriteLine("The service operation timed out. " + timeProblem.Message);
wcfClient.Abort();
Console.ReadLine();
}
// Catch the contractually specified SOAP fault raised here as an exception.
catch (FaultException<GreetingFault> greetingFault)
{
Console.WriteLine(greetingFault.Detail.Message);
Console.Read();
wcfClient.Abort();
}
// Catch unrecognized faults. This handler receives exceptions thrown by WCF
// services when ServiceDebugBehavior.IncludeExceptionDetailInFaults
// is set to true.
catch (FaultException faultEx)
{
Console.WriteLine("An unknown exception was received. "
+ faultEx.Message
+ faultEx.StackTrace
);
Console.Read();
wcfClient.Abort();
}
// Standard communication fault handler.
catch (CommunicationException commProblem)
{
Console.WriteLine("There was a communication problem. " + commProblem.Message + commProblem.StackTrace);
Console.Read();
wcfClient.Abort();
}
}
}
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports Microsoft.WCF.Documentation
Public Class Client
Public Shared Sub Main()
' Picks up configuration from the configuration file.
Dim wcfClient As New SampleServiceClient()
Try
' Making calls.
Console.WriteLine("Enter the greeting to send: ")
Dim greeting As String = Console.ReadLine()
Console.WriteLine("The service responded: " & wcfClient.SampleMethod(greeting))
Console.WriteLine("Press ENTER to exit:")
Console.ReadLine()
Catch timeProblem As TimeoutException
Console.WriteLine("The service operation timed out. " & timeProblem.Message)
wcfClient.Abort()
Console.ReadLine()
' Catch the contractually specified SOAP fault raised here as an exception.
Catch greetingFault As FaultException(Of GreetingFault)
Console.WriteLine(greetingFault.Detail.Message)
Console.Read()
wcfClient.Abort()
' Catch unrecognized faults. This handler receives exceptions thrown by WCF
' services when ServiceDebugBehavior.IncludeExceptionDetailInFaults
' is set to true.
Catch faultEx As FaultException
Console.WriteLine("An unknown exception was received. " & faultEx.Message + faultEx.StackTrace)
Console.Read()
wcfClient.Abort()
' Standard communication fault handler.
Catch commProblem As CommunicationException
Console.WriteLine("There was a communication problem. " & commProblem.Message + commProblem.StackTrace)
Console.Read()
wcfClient.Abort()
End Try
End Sub
End Class
備註
在服務中,使用 FaultException 類別建立一個不具型別的錯誤,將它傳回至用戶端以進行偵錯之用。
在用戶端攔截 FaultException 物件來處理未知或一般錯誤,例如將 IncludeExceptionDetailInFaults 屬性設為 true
的服務所傳回的錯誤。 因為 延伸了 ,請記得在攔截 物件之前先攔截 物件,才能分別攔截它們。
注意
雙工服務亦可攔截與雙工用戶端互動時,所傳回的 FaultException 物件。
一般而言,若您決定用戶端需要錯誤資訊,則強烈建議您使用 FaultContractAttribute 來設計服務,以對所有錯誤情況傳回強型別 SOAP 錯誤 (以及未管理例外狀況物件)。 但遇到下列狀況時,請使用 FaultException︰
從服務傳送 SOAP 錯誤以進行偵錯。
若該錯誤不是服務合約的一部分時,在用戶端攔截 SOAP 錯誤。
當您想將該字串傳給建構函式,以及讓用戶端結取該字串時 (藉由呼叫 方法),擲回 物件。 若您指定一個 System.ServiceModel.FaultException<TDetail> 型別的錯誤合約,且型別參數為 System.String,則字串值可以 FaultException<TDetail>.Detail 屬性取得,而不是呼叫 FaultException<TDetail>.ToString。
如需詳細資訊,請參閱 在合約和服務中指定及處理錯誤。
建構函式
FaultException() |
初始化 FaultException 類別的新執行個體。 |
FaultException(FaultReason) |
使用指定原因,初始化 FaultException 類別的新執行個體。 |
FaultException(FaultReason, FaultCode) |
使用指定的原因與錯誤碼,初始化 FaultException 類別的新執行個體。 |
FaultException(FaultReason, FaultCode, String) |
使用指定的原因、錯誤碼與動作值,初始化 FaultException 類別的新執行個體。 |
FaultException(MessageFault) |
使用指定的訊息錯誤值,初始化 FaultException 類別的新執行個體。 |
FaultException(MessageFault, String) |
使用指定的訊息錯誤值與提供的動作字串,初始化 FaultException 類別的執行個體。 |
FaultException(SerializationInfo, StreamingContext) |
將資料流還原序列化至 FaultException 物件時,使用指定的序列化資訊和內容,初始化 FaultException 類別的新執行個體。 |
FaultException(String) |
使用指定的錯誤原因,初始化 FaultException 類別的新執行個體。 |
FaultException(String, FaultCode) |
使用指定的原因與 SOAP 錯誤碼,初始化 FaultException 類別的新執行個體。 |
FaultException(String, FaultCode, String) |
使用指定的原因、錯誤碼與動作值,初始化 FaultException 類別的新執行個體。 |
屬性
Action |
取得錯誤訊息的 SOAP 動作值。 |
Code |
取得 SOAP 錯誤的錯誤碼。 |
Data |
取得鍵值組的集合,這些鍵值組會提供關於例外狀況的其他使用者定義資訊。 (繼承來源 Exception) |
HelpLink |
取得或設定與這個例外狀況相關聯的說明檔連結。 (繼承來源 Exception) |
HResult |
取得或設定 HRESULT,它是指派給特定例外狀況的編碼數值。 (繼承來源 Exception) |
InnerException |
取得造成目前例外狀況的 Exception 執行個體。 (繼承來源 Exception) |
Message |
取得例外狀況的訊息。 |
Reason |
取得 SOAP 錯誤的 FaultReason。 |
Source |
取得或設定造成錯誤的應用程式或物件的名稱。 (繼承來源 Exception) |
StackTrace |
取得呼叫堆疊上即時運算框架的字串表示。 (繼承來源 Exception) |
TargetSite |
取得擲回目前例外狀況的方法。 (繼承來源 Exception) |
方法
CreateFault(MessageFault, String, Type[]) |
從指定的訊息錯誤、動作與一個詳細型別陣列,傳回一個 FaultException 物件。 |
CreateFault(MessageFault, Type[]) |
從指定的訊息錯誤與一個詳細型別陣列,傳回一個 FaultException 物件。 |
CreateMessageFault() |
傳回 MessageFault 物件。 |
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetBaseException() |
在衍生類別中覆寫時,傳回一或多個後續的例外狀況的根本原因 Exception。 (繼承來源 Exception) |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetObjectData(SerializationInfo, StreamingContext) |
GetObjectData(SerializationInfo, StreamingContext) 方法的實作,當物件序列化成資料流時,會呼叫此方法。 |
GetObjectData(SerializationInfo, StreamingContext) |
在衍生類別中覆寫時,使用例外狀況的資訊設定 SerializationInfo。 (繼承來源 Exception) |
GetType() |
取得目前執行個體的執行階段類型。 (繼承來源 Exception) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
建立並傳回目前例外狀況的字串表示。 (繼承來源 Exception) |
事件
SerializeObjectState |
已淘汰.
當例外狀況序列化,以建立包含例外狀況相關序列化資料的例外狀況狀態物件時,就會發生此事件。 (繼承來源 Exception) |