올바른 방법은 오류 계약을 정의하는 것입니다. 당신이
[ServiceContract]
public interface IMyServiceContract
{
[OperationContract]
[FaultContract(typeof(NoRoomsAvailableFaultContract))]
void MyOperation();
}
주어진 서비스 작업이 계약을 선언 그리고 당신과 같이 그것을 구현
[DataContract]
public class NoRoomsAvailableFaultContract
{
[DataMember]
public string Message { get; set; }
}
다음 :
public class MyService : IMyServiceContract
{
public void MyOperation()
{
if (somethingWentWrong)
{
var faultContract = new NoRoomsAvailableFaultContract()
{
Message = "ERROR MESSAGE"
};
throw new FaultException<NoRoomsAvailableFaultContract>(faultContract);
}
}
}
웹 서비스 예를 들어, 당신은 다음을 수행 할 수 이 경우 NoRoomsAvailableFaultContract가 WSDL에 노출되고 svcutil.exe는 프록시 클래스를 생성 할 수 있습니다. 그렇다면이 예외를 잡을 수 있습니다 :
try
{
myServiceProxy.MyOperation();
}
catch (FaultException<NoRoomsAvailableFaultContract> ex)
{
Console.WriteLine(ex.Message);
}
나는 이것이 내 catch 문에서 FaultException의 FaultException 을 분리 할 수 있다고 가정합니다. –
예, 다른 오류 예외를 잡을 수 있습니다. –