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

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

오류 처리

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

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

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

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

반환 대 던지기

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

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

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

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

반환된 표현식

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

다음 코드를 고려하세요:

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

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

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

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

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

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

예를 들어

반환합니다:

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

어떤 결과가 나옵니다:

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

W를 반환합니다:

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

결론

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

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

작성자

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

전생에 마르코는 이탈리아 최대 방사선 치료 기관에서 CTO, 방사선 물리학자, 소프트웨어 설계자, 시스템 관리자, DBA, 트레이너, 일반 관리자로 일했습니다. 직업과 국가를 바꾼 그는 처음에는 Informix에서, 나중에는 IBM에서 20년 이상 다양한 지원 및 개발 직책을 맡다가 마침내 과감히 Couchbase에 합류하여 N1QL에서 금을 만드는 데 도움을 주었습니다. 그는 여러 개의 특허를 보유하고 있으며 직접 오픈 소스 프로젝트를 저술하기도 했습니다.

댓글 남기기