카우치베이스 서버

N1QL에서 JavaScript로 - 4부: 오류 처리하기

이전 블로그에서 자바스크립트에서 N1QL을 실행하는 방법에 대해 살펴봤습니다. 함수문서 처리 반복기를 통해데이터 조작.

이제 N1QL 문의 오류 처리로 넘어가겠습니다.

오류 처리

어떤 성격의 오류가 발생하면 jsevaluator 는 기본적으로 함수 실행을 중지하고 오류를 반환합니다:

이 특별한 경우에는 두 번째 INSERT가 실패합니다. k10 이미 존재합니다:

기본 동작을 고수할 필요 없이 JavaScript를 통해 오류를 포착하고 처리할 수 있습니다:

이 경우 함수 doInsert() 반환 실패 왜냐하면 키 k10 이미 존재합니다.

반환 대 던지기

그리고 catch 블록을 사용하여 비즈니스 로직에 유용한 방식으로 장애를 처리할 수 있습니다.

사용 가능한 옵션은 1) 회피 조치를 취하고 실행을 계속하거나, 2) 성공 시 조기 복귀하거나, 3) 실패 시 조기 복귀하는 것으로 요약됩니다.

성공과 실패의 차이는 단순히 반환 를 사용하여 위의 예제에서와 같이 값을 반환하는 것과 throw 를 클릭하여 오류를 반환합니다.

이 둘의 차이점은 다음과 같은 이유로 중요합니다. 결과를 반환하도록 선택하면 호출자 요청이 계속 실행됩니다. 오류를 발생시키면 전체 요청이 오류와 함께 실패하게 되므로 요청이 올바르게 작동하는 것과 오작동하는 것의 차이를 만들 수 있으므로 어떤 것을 사용할지 신중하게 생각해야 합니다.

반환된 표현식

두 번째로 염두에 두어야 할 것은 반환하거나 오류를 던질 때 의미 있는 정보를 제공해야 한다는 것입니다.

다음 코드를 고려하세요:

다음과 같은 경우 실패합니다:

앞의 예시와 마찬가지로, 여기서 얻을 수 있는 결론은 다음과 같습니다. err 는 객체이며 이유 필드에 입력합니다.

그러나 throw 문과 같이 작성합니다:

그리고 doInsert() 함수는 이제 객체가 아닌 문자열을 반환합니다:

그리고 err 객체를 문자열로 마샬링하면 갑자기 오류를 읽을 수 없게 됩니다.

이는 다음에 적용됩니다. 반환 너무: 특히 기본적으로 err 에는 마샬링된 JSON 객체가 포함된 문자열이 포함됩니다.

예를 들어

반환합니다:

멋진 반환값을 얻으려면, 반환값을 구문 분석해야 합니다. error.message 객체를 반환합니다:

어떤 결과가 나옵니다:

스택도 포함하려면 다음과 같이 새 객체를 구성해야 합니다:

W를 반환합니다:

이 이야기의 교훈은 오류를 반환하는 방법과 형식에 유의해야 한다는 것입니다.

결론

여러 블로그에 걸쳐 N1QL 실행, 문서 처리 및 데이터 조작, 오류 처리에 대해 살펴보았습니다.

다음 시리즈에서는 준비된 명세서로 이동합니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

Author

Posted by 마르코 그레코, 소프트웨어 아키텍트, 카우치베이스

In a previous life, Marco used to be CTO, radiation physicist, software architect, sysadmin, DBA, trainer and general handyman at Italy's largest radiation theraphy practice. Having switched career and country, he spent more than two decades in various support and development positions in Informix first and IBM later, before finally taking the plunge and joining Couchbase, to help them make gold out of N1QL. He holds several patents and has authored open source projects of his own.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.