12

로 돌아가려면 사용자 정의 예외에 추가 속성을 추가합니다. 이 오류 인 경우 나 클라이언트에 특정 응답을 다시 게시 할 수 있습니다다음과 같이 I 사용자 정의 예외 클래스가 AJAX 기능

.... 
ajax code.... 
.error = function (xhr, text, message) { 
    var parsed = JSON.parse(xhr.responseText); 
    var isSamCustomError = (parsed.ExceptionType).toLowerCase().indexOf('samexception') >= 0; 
.... etc.... 

: 내 AJAX 응답의 오차 함수에서

내가 오류가이처럼 내 사용자 정의 유형의 것을 결정하고 내 사용자 정의 유형.

하지만 ... 나는이 케이스를 다르게 처리하기 위해 AJAX 코드의 클라이언트에 여분의 속성 OfferBugSend을 게시 할 수없는 것처럼 보입니다.

console.log("OfferBugSend: " + parsed.OfferBugSend) 

는 정의 보여주고, 내가 응답을 확인하는 경우 xhr.responseText에만 속성이 포함되어 있기 때문에, 이것은이다 :이 속성은 기본 클래스 Exception 출신

ExceptionType 
Message 
StackTrace 

을하지만 내 사용자 정의 클래스를 통과하지 않습니다 속성 ...

어떻게하면됩니까?

+1

AJAX를 제출하고 'SamException'을 던지는 코드 예제를 첨부하십시오. – codeDom

+0

내가 원하는 코드를 잡으라고 조언합니다. 예외가 발생하면 해당 예외를 BLL/DAL에서 프레젠테이션 계층으로 가져옵니다. 프레젠테이션 계층에서 예외에서 변환 될 새 예외 유형을 반환하는 방법을 제공하십시오. 예 : try catch (특별한 예외) {return new {.SpecialMessage = "IamError",. IsError = True}. Ajax에서 IsError를 확인하십시오. – Programmer

답변

3

예외 클래스는 직렬화 가능하지만 IDictionary를 포함하고 사용자 정의 예외 클래스를 직렬화하기 위해 더 많은 작업이 필요한 ISerializable을 구현합니다.

Public Property OfferBugSend As Boolean 
    Get 
     Return Data("OfferBugSend") 
    End Get 
    Set(value As Boolean) 
     Data("OfferBugSend") = value 
    End Set 
End Property 

또 다른 방법이 파생 클래스도 포함 ISerializable 인터페이스를 구현 보장하는 것입니다 할 :

이 처리 할 수있는 쉬운 방법과 같이 예외 클래스의 Data 모음을 활용하는 것입니다 serialization 생성자를 제공하고 GetObjectData()를 재정의합니다. 이 방법의 기준으로이 other answer (C#)을 참조하십시오.