JsonConverter 속성에서 발생한 예외를 포착하는 방법은 무엇입니까?

모델 클래스의 속성에서 사용할 사용자 지정 JsonConverter를 구축하고 있습니다. 모델은 Web API 컨트롤러에서 입력 매개 변수로 사용됩니다. 내 JsonConverter FormatException에서 입력이 마음에 들지 않으면 던지고 있습니다.

내 모델의 일부는 다음과 같습니다.

public class PropertyVM
{
    public string PropertyId { get; set; }

    [JsonConverter( typeof(BoolConverter) )]
    public bool IsIncludedInSearch { get; set; }
}

내 컨트롤러 작업은 다음과 같습니다.

[HttpPost, Route("{propertyId}")]
public IHttpActionResult UpdateProperty( string propertyId, [FromBody] PropertyVM property )
{
    bool success;
    try
    {
        property.PropertyId = propertyId;   
        success = _inventoryDAL.UpdateProperty( property );
    }
    catch ( Exception ex ) when 
    ( 
           ex is ArgumentException 
        || ex is ArgumentNullException
        || ex is ArgumentOutOfRangeException
        || ex is FormatException 
        || ex is NullReferenceException
        || ex is OverflowException 
    )
    {
        return BadRequest( ex.Message );
    }

    if ( !success )
    {
        return NotFound();
    }

    return Ok();
}

에 대한 잘못된 값으로 컨트롤러를 호출하면 컨트롤러 IsIncludedInSearch에서을 잡을 것으로 예상 FormatException했지만 발생하지 않습니다. 내 변환기에서 예외가 발생했지만 미디어 포맷터가 실행 중일 때 발생합니다. 컨트롤러에 들어갈 때 예외가 발생했지만 포착 할 수 없습니다. 그래서 나는 OK나쁜 매개 변수를 가지고 있어도 돌아온다 .

적절한 응답을 반환 할 수 있도록 컨트롤러에서 변환기에서 예외가 발생했음을 확인하려면 어떻게해야합니까?

Alltej

모델의 유효성 검사 오류 및 기타 속성 오류를 포함 할 모델 상태 오류를 확인해야합니다. 따라서 코드에서 다음과 같이 할 수 있습니다.

    [HttpPost, Route("{propertyId}")]
    public IHttpActionResult UpdateProperty(string propertyId, 
        [FromBody] PropertyVM property)
    {
        bool success = false;
        if (ModelState.IsValid)
        {
            try
            {
                property.PropertyId = propertyId;
                success = _inventoryDAL.UpdateProperty(property);
            }
            catch (Exception ex) //business exception errors
            {
                return BadRequest(ex.Message);
            }

        }
        else
        {
            var errors = ModelState.Select(x => x.Value.Errors)
                                   .Where(y => y.Count > 0)
                                   .ToList();
            return ResponseMessage(
                Request.CreateResponse(HttpStatusCode.BadRequest, errors));
        }

        if (!success)
        {
            return NotFound();
        }

        return Ok();
    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

비동기 생성기에서 발생한 예외를 테스트하는 방법은 무엇입니까?

분류에서Dev

예외가 발생할 때마다 예외를 포착하는 방법은 무엇입니까?

분류에서Dev

PowerShell에서 예외를 포착하는 방법은 무엇입니까?

분류에서Dev

전체 함수를 처리하지 않고 생성자에서 예외를 포착하는 방법은 무엇입니까?

분류에서Dev

AutoCloseable에서 발생한 예외를 처리 (또는 억제)하는 권장 방법은 무엇입니까?

분류에서Dev

Python이 C ++에서 발생한 예외를 포착하지 않는 이유는 무엇입니까?

분류에서Dev

Undertow 작업자 스레드에서 발생한 예외를 처리하는 방법은 무엇입니까?

분류에서Dev

예외가 발생한 후 속성 / 필드 Exception.ErrorDetails에 액세스하는 방법은 무엇입니까?

분류에서Dev

Databricks에서 예외를 발생시키는 방법은 무엇입니까?

분류에서Dev

스레드에서 발생한 예외를 잡는 방법은 무엇입니까?

분류에서Dev

코드에서 Doctrine의 예외가 발생한 위치를 찾는 방법은 무엇입니까?

분류에서Dev

BackgroundWorker 스레드 내에서 예외가 발생한 위치를 찾는 방법은 무엇입니까?

분류에서Dev

함수 호출에서 예외가 발생하면 처리를 계속하는 방법은 무엇입니까?

분류에서Dev

Eclipse Jet에서 코드 생성 중에 예외를 발생시키는 방법은 무엇입니까?

분류에서Dev

node.js 약속 : .catch 문에서 예외가 발생한 반복을 찾는 방법은 무엇입니까?

분류에서Dev

C ++의 생성자에서 예외를 포착하는 방법

분류에서Dev

Kotlin의 확장 함수에서 발생한 예외에 대한 사용자 지정 예외 메시지를 제공하는 방법은 무엇입니까?

분류에서Dev

WinCE에서 처리되지 않은 예외를 포착하는 방법은 무엇입니까?

분류에서Dev

생성자에 예외를 전달하는 방법은 무엇입니까?

분류에서Dev

Firefox에서 타사 쿠키에 대한 예외를 생성하는 방법은 무엇입니까?

분류에서Dev

Android 앱에서 Butterknife에 의해 발생한 Null 포인터 예외를 디버깅하는 방법은 무엇입니까?

분류에서Dev

iOS Objective-C에서 C ++ 예외 코드를 포착하는 방법은 무엇입니까?

분류에서Dev

Junit 테스트 케이스에서 감싸 진 예외를 포착하는 방법은 무엇입니까?

분류에서Dev

Flux에서 예외를 발생시킨 요소를 얻는 방법은 무엇입니까?

분류에서Dev

낮은 수준의 패키지 또는 함수 호출에서 발생한 예외를 처리하는 방법은 무엇입니까?

분류에서Dev

CompletableFuture에서 사용자 정의 예외를 발생시키는 방법은 무엇입니까?

분류에서Dev

clojure pre-expr에서 예외를 발생시키는 방법은 무엇입니까?

분류에서Dev

Autobahn Python ApplicationSession .__ init__에서 예외를 발생시키는 방법은 무엇입니까?

분류에서Dev

Async.AwaitTask로 실행되는 작업에서 발생한 예외를 포착하는 방법

Related 관련 기사

  1. 1

    비동기 생성기에서 발생한 예외를 테스트하는 방법은 무엇입니까?

  2. 2

    예외가 발생할 때마다 예외를 포착하는 방법은 무엇입니까?

  3. 3

    PowerShell에서 예외를 포착하는 방법은 무엇입니까?

  4. 4

    전체 함수를 처리하지 않고 생성자에서 예외를 포착하는 방법은 무엇입니까?

  5. 5

    AutoCloseable에서 발생한 예외를 처리 (또는 억제)하는 권장 방법은 무엇입니까?

  6. 6

    Python이 C ++에서 발생한 예외를 포착하지 않는 이유는 무엇입니까?

  7. 7

    Undertow 작업자 스레드에서 발생한 예외를 처리하는 방법은 무엇입니까?

  8. 8

    예외가 발생한 후 속성 / 필드 Exception.ErrorDetails에 액세스하는 방법은 무엇입니까?

  9. 9

    Databricks에서 예외를 발생시키는 방법은 무엇입니까?

  10. 10

    스레드에서 발생한 예외를 잡는 방법은 무엇입니까?

  11. 11

    코드에서 Doctrine의 예외가 발생한 위치를 찾는 방법은 무엇입니까?

  12. 12

    BackgroundWorker 스레드 내에서 예외가 발생한 위치를 찾는 방법은 무엇입니까?

  13. 13

    함수 호출에서 예외가 발생하면 처리를 계속하는 방법은 무엇입니까?

  14. 14

    Eclipse Jet에서 코드 생성 중에 예외를 발생시키는 방법은 무엇입니까?

  15. 15

    node.js 약속 : .catch 문에서 예외가 발생한 반복을 찾는 방법은 무엇입니까?

  16. 16

    C ++의 생성자에서 예외를 포착하는 방법

  17. 17

    Kotlin의 확장 함수에서 발생한 예외에 대한 사용자 지정 예외 메시지를 제공하는 방법은 무엇입니까?

  18. 18

    WinCE에서 처리되지 않은 예외를 포착하는 방법은 무엇입니까?

  19. 19

    생성자에 예외를 전달하는 방법은 무엇입니까?

  20. 20

    Firefox에서 타사 쿠키에 대한 예외를 생성하는 방법은 무엇입니까?

  21. 21

    Android 앱에서 Butterknife에 의해 발생한 Null 포인터 예외를 디버깅하는 방법은 무엇입니까?

  22. 22

    iOS Objective-C에서 C ++ 예외 코드를 포착하는 방법은 무엇입니까?

  23. 23

    Junit 테스트 케이스에서 감싸 진 예외를 포착하는 방법은 무엇입니까?

  24. 24

    Flux에서 예외를 발생시킨 요소를 얻는 방법은 무엇입니까?

  25. 25

    낮은 수준의 패키지 또는 함수 호출에서 발생한 예외를 처리하는 방법은 무엇입니까?

  26. 26

    CompletableFuture에서 사용자 정의 예외를 발생시키는 방법은 무엇입니까?

  27. 27

    clojure pre-expr에서 예외를 발생시키는 방법은 무엇입니까?

  28. 28

    Autobahn Python ApplicationSession .__ init__에서 예외를 발생시키는 방법은 무엇입니까?

  29. 29

    Async.AwaitTask로 실행되는 작업에서 발생한 예외를 포착하는 방법

뜨겁다태그

보관