FaultException Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje usterkę protokołu 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
- Dziedziczenie
- Dziedziczenie
- Pochodne
- Atrybuty
Przykłady
Poniższy przykład kodu przedstawia użycie bloku try/catch do przechwytywania i obsługi FaultException obiektów zgłaszanych z usługi. Dzieje się tak często, gdy debugowanie jest włączone w aplikacji usługi.
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
Uwagi
W usłudze użyj FaultException klasy , aby utworzyć nietypowy błąd, aby powrócić do klienta na potrzeby debugowania.
W kliencie przechwytują FaultException obiekty do obsługi nieznanych lub ogólnych błędów, takich jak te zwrócone przez usługę z właściwością IncludeExceptionDetailInFaults ustawioną na true
. Ponieważ FaultException rozszerza CommunicationExceptionobiekt , pamiętaj, aby przechwycić wszystkie FaultException obiekty przed przechwyceniem CommunicationException obiektów, jeśli chcesz je przechwycić oddzielnie.
Uwaga
Usługi dwukierunkowe mogą również przechwytywać FaultException obiekty zwracane z interakcji z klientem dwukierunkowym.
Ogólnie rzecz biorąc, zdecydowanie zaleca się użycie elementu FaultContractAttribute do projektowania usług w celu zwrócenia silnie typionych błędów protokołu SOAP (a nie zarządzanych obiektów wyjątków) dla wszystkich przypadków błędów, w których decydujesz, że klient wymaga informacji o błędach. Należy jednak użyć wartości FaultException w następujących sytuacjach:
Aby wysłać błędy protokołu SOAP z usługi do celów debugowania.
Aby złapać błędy protokołu SOAP na kliencie, gdy błędy nie są częścią kontraktu usługi.
Zgłaszaj FaultException obiekty, gdy chcesz przekazać ciąg do konstruktora i pobrać go przez klienta przez wywołanie FaultException<TDetail>.ToString metody . Jeśli określisz kontrakt błędów typu System.ServiceModel.FaultException<TDetail> , w którym parametr typu to System.String, wartość ciągu jest dostępna jako FaultException<TDetail>.Detail właściwość, a nie przez wywołanie metody FaultException<TDetail>.ToString.
Aby uzyskać szczegółowe informacje, zobacz Określanie i obsługa błędów w kontraktach i usługach.
Konstruktory
FaultException() |
Inicjuje nowe wystąpienie klasy FaultException. |
FaultException(FaultReason) |
Inicjuje FaultException nowe wystąpienie klasy przy użyciu określonej przyczyny. |
FaultException(FaultReason, FaultCode) |
Inicjuje FaultException nowe wystąpienie klasy przy użyciu określonego powodu i kodu błędu. |
FaultException(FaultReason, FaultCode, String) |
Inicjuje FaultException nowe wystąpienie klasy przy użyciu określonej przyczyny, kodu błędu i wartości akcji. |
FaultException(MessageFault) |
Inicjuje FaultException nowe wystąpienie klasy przy użyciu określonych wartości błędów komunikatu. |
FaultException(MessageFault, String) |
Inicjuje FaultException nowe wystąpienie klasy przy użyciu określonych wartości błędów komunikatu i podanego ciągu akcji. |
FaultException(SerializationInfo, StreamingContext) |
Inicjuje FaultException nowe wystąpienie klasy przy użyciu określonych informacji o serializacji i kontekstu podczas deserializacji strumienia FaultException do obiektu. |
FaultException(String) |
Inicjuje FaultException nowe wystąpienie klasy z określoną przyczyną błędu. |
FaultException(String, FaultCode) |
Inicjuje nowe wystąpienie klasy przy użyciu określonego FaultException powodu i kodu błędu PROTOKOŁU SOAP. |
FaultException(String, FaultCode, String) |
Inicjuje FaultException nowe wystąpienie klasy przy użyciu określonej przyczyny, kodu błędu i wartości akcji. |
Właściwości
Action |
Pobiera wartość akcji SOAP dla komunikatu o błędzie. |
Code |
Pobiera kod błędu dla błędu PROTOKOŁU SOAP. |
Data |
Pobiera kolekcję par klucz/wartość, które zapewniają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku. (Odziedziczone po Exception) |
HelpLink |
Pobiera lub ustawia link do pliku pomocy skojarzonego z tym wyjątkiem. (Odziedziczone po Exception) |
HResult |
Pobiera lub ustawia HRESULT, zakodowaną wartość liczbową przypisaną do określonego wyjątku. (Odziedziczone po Exception) |
InnerException |
Exception Pobiera wystąpienie, które spowodowało bieżący wyjątek. (Odziedziczone po Exception) |
Message |
Pobiera komunikat dla wyjątku. |
Reason |
FaultReason Pobiera błąd protokołu SOAP. |
Source |
Pobiera lub ustawia nazwę aplikacji lub obiektu, który powoduje błąd. (Odziedziczone po Exception) |
StackTrace |
Pobiera reprezentację ciągu natychmiastowych ramek w stosie wywołań. (Odziedziczone po Exception) |
TargetSite |
Pobiera metodę, która zgłasza bieżący wyjątek. (Odziedziczone po Exception) |
Metody
CreateFault(MessageFault, String, Type[]) |
FaultException Zwraca obiekt z określonego błędu komunikatu, akcji i tablicy typów szczegółów. |
CreateFault(MessageFault, Type[]) |
FaultException Zwraca obiekt z określonej błędu komunikatu i tablicę typów szczegółów. |
CreateMessageFault() |
Zwraca MessageFault obiektu. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetBaseException() |
W przypadku zastąpienia w klasie pochodnej zwraca Exception główną przyczynę co najmniej jednego kolejnego wyjątku. (Odziedziczone po Exception) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Implementacja GetObjectData(SerializationInfo, StreamingContext) metody wywoływanej podczas serializacji obiektu do strumienia. |
GetObjectData(SerializationInfo, StreamingContext) |
Po przesłonięciu w klasie pochodnej ustawia SerializationInfo wartość z informacjami o wyjątku. (Odziedziczone po Exception) |
GetType() |
Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia. (Odziedziczone po Exception) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Tworzy i zwraca reprezentację ciągu bieżącego wyjątku. (Odziedziczone po Exception) |
Zdarzenia
SerializeObjectState |
Przestarzałe.
Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku zawierającego serializowane dane o wyjątku. (Odziedziczone po Exception) |