문제

나는 확실하지 않다 나는 완전히 행복을 던지는 예외에서는 웹 서비스는 것이 좋습니다.I wouldnt 마음으로 많지 않은 경우 스택 추적합니다.이것은 뭔가가 나는 완 없습니다.

나는 연구의 주위에 여러 가지 구현 및 정말 거기 보이지 않는 것에 대한 합의에 이다.CampaignMonitor 예를 들어지는 결과를 반환체,그러나 다른 사람은 하지 않습니다.

구조적으로,나는 확실하지 않을 반환하는 객체 반환을 의미가 반드시 예외는 예외는 아니다,하지만 나는 무엇을 좋아에 대한 개체 반환은 우아한 솔루션을 최종 사용자에게 있습니다.

가 더 나은 솔루션입니까?

편집

BTW I am 를 사용하여 ASMX 웹 서비스,전 즉,이 경우 안에서 옵션을 선택하지 않습니다.

도움이 되었습니까?

해결책

어떤 스택 추적에 대해 이야기하고 있습니까? 이것을 시도해 보셨습니까?

ASMX 및 WCF 서비스 모두에서 끊임없는 예외는 비누 고장으로 변환됩니다. 두 경우 모두 스택 추적을 포함하지 않도록 구성 할 수 있습니다. 사실, 그것은 WCF의 기본값입니다.

따라서 이와 같은 오류를 반환하는 적절한 방법은 결함을 통한 것입니다. 결함을 생성하는 한 가지 방법은 제외하고 예외를 처리하지 않는 것입니다.

다른 팁

시키지 않는다는 사실 당신은 웹 서비스에서 혼동하는 문제입니다.그냥 구현한 세부 사항입니다.

사용상의 예외 처리 전략입니다.최고의 연습이지 않는 말하는 트랩에서 예외를 낮은 레벨의 코드--지 않는 한 당신이 해결할 수 있는 예외가 있고 정상적으로 계속 진행합니다.예외가 발생하는 프레젠테이션 층에게 사용자가 될 수 있습의 정보에 오류가 있습니다.

그래서,적용하는 웹 서비스에서 일반 예외가 발생(있는 결과에 SoapFault).이를 호출하여 클라이언트 사용하는 코드에 내장 된 예외 처리 표준를 처리하도록 합니다.

한 가지 방법은 시스템과 비즈니스 오류를 분리하는 것입니다. (시스템 오류 : 예를 들어 요청, 사용자 승인 등의 기형 등; 비즈니스 오류 : 예를 들어 Method UpdateCars는 오류가 발생하고 사용자는 자동차를 소유하지 않습니다).

비즈니스 오류의 경우 오류 설명이 포함 된 응답 객체를 반환합니다. 시스템 오류의 경우 예외를 던지십시오.

조금 명확히 할 수 있습니까? 웹 서비스의 서버 측면 예외가 발생할 수 있습니다. 웹 서비스의 서버 측면 메시지를 클라이언트 측에 반환 할 수 있습니다. 이 메시지에는 오류 정보가 포함될 수 있으며 해당 오류 정보는 구체적으로 예외 세부 정보를 포함 할 수 있습니다. 아니면 그렇지 않을 수도 있습니다. 클라이언트 측에서는 일반적으로 서버의 메시지를 처리하기 위해 생성 된 프록시가 있습니다. 이 프록시는 해당 응답에 오류 정보가 포함 된 경우 예외를 생성 할 수 있습니다.

이 시나리오의 어느 부분에 대해 궁금하십니까?

나는 던지는 예외가 일반적으로 더 나은 디자인 패턴으로 결과를 반환한다고 가정합니다. 웹 서비스로 노출 된 각 방법에 다음 패턴을 적용하여 스택 추적을 숨기려면 웹 서비스 내부에 있어야한다고 가정합니다.

public void mywebservicemethod () {
노력하다
{

 ///Do something that may cause an error

} catch (예외)
{새로운 ApplicationException 던지기 ( "예외의 사용자 친화적 인 소환");

}

}

또는 당신도 할 수도 있습니다

캐치 (예외 예) {throw ex; }

예외를 다시 던지면 웹 서비스 클라이언트에서 원래 스택 추적을 숨 깁니다.

왜 둘 다 할 수 없는지 모르겠어? 예외를 잡고 (DB 또는 파일에) 로그인 한 다음 오류 코드를 반환하십시오. 이렇게하면 웹 서비스 호출을 우아하게 실행하고 오류에 대한 알림을받으며 다른 곳에서 더 먼 곳을 디버깅 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top