올바른 방법으로 예외를 포착하는 방법은 무엇입니까? [초보자]

MyException을 포착하지 않는 다음 함수가 있습니다.

const myFunction = () => async (req, res, next) => {
  try {
    myHTTPRequest().then(async (response) => {
      if (response.data.results.length != 1) {
        throw new MyException('MyError');
      }
      res.end('All good');
    })
    .catch((error) => {
      throw error; //Doesn't work
    });
  } catch (error) {
    console.log('This block should catch MyException, but it doesn't');
    next(error);
  }
};

대신 응용 프로그램은 다음 오류 메시지를 콘솔에 씁니다.

(node:45746) UnhandledPromiseRejectionWarning
(node:45746) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:45746) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

문제는 예상되는 Catch-Block에서 MyException을 잡기 위해 코드를 어떻게 조정해야합니까?

마르코스 카사 그란데

문제는 당신이 혼합하고 있다는 것입니다 .then/.catch함께 try/catch.

함수 try/catch코드를 입력하려면 키워드 async를 사용해야 await합니다 Promise.

.catch아무것도하지 않고 오류를 다시 던지고 있으므로 삭제할 수 있습니다 .UnhandledPromiseRejectionWarning

const myFunction = () => (req, res, next) => {
  try {
    const response = await myHTTPRequest();

    if (response.data.results.length != 1) {
      throw new MyException('MyError');
    }
    res.end('All good');

  } catch (error) {
    next(error);
  }
};

코드 .then/catch없이 사용하면 async/await다음과 같습니다.

const myFunction = () => (req, res, next) => {

    myHTTPRequest().then((response) => {
      if (response.data.results.length != 1) {
        throw new MyException('MyError');
      }
      res.end('All good');
    })
    .catch((error) => {
      throw error;
       // It makes no sense to throw again in here
       // But I'm showing you how to handle it if you do
    })
    .catch(error => {
        next(error);
    })
};

물론 이중 .catch은 의미가 없으므로 제거하고 단일 항목을 남겨야합니다.

const myFunction = () => (req, res, next) => {

    myHTTPRequest().then((response) => {
      if (response.data.results.length != 1) {
        throw new MyException('MyError');
      }
      res.end('All good');
    })
    .catch(error => {
        next(error);
    })
};

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

올바른 방법으로 예외를 포착하는 방법은 무엇입니까? [초보자]

분류에서Dev

여러 대화 상자를 올바른 방법으로 닫는 방법은 무엇입니까?

분류에서Dev

Android에서 회전 된보기를 올바른 방향으로 이동하는 방법은 무엇입니까?

분류에서Dev

초기 데이터를 새 창으로 전달하는 올바른 방법은 무엇입니까?

분류에서Dev

QList를 초기화하는 올바른 방법은 무엇입니까?

분류에서Dev

CherryPy로 모든 예외를 포착하는 방법은 무엇입니까?

분류에서Dev

자기 객체를 참조하는 올바른 방법은 무엇입니까

분류에서Dev

Linux에서 CPU 속도를 보는 올바른 방법은 무엇입니까?

분류에서Dev

포착 된 예외를 저장하고 시스템 종료 처리 목적으로 함수 외부에서 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

내 숫자 변수를 초기화하는 올바른 방법은 무엇입니까?

분류에서Dev

Vue.js 3 내 숫자 변수를 초기화하는 올바른 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

자바 스크립트에서 전역 변수를 올바른 방법으로 선언하는 방법은 무엇입니까?

분류에서Dev

UEFI로 Ubuntu를 올바른 방법으로 다시 설치하는 방법은 무엇입니까?

분류에서Dev

UEFI로 Ubuntu를 올바른 방법으로 다시 설치하는 방법은 무엇입니까?

분류에서Dev

double 변수에 포함 된 올바른 자릿수를 인쇄하는 방법은 무엇입니까?

분류에서Dev

RASA의 API (rasa.core.processor-예외 발생)를 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

모든 화면에서 현재 Firebase 사용자를 확보하는 올바른 방법은 무엇입니까?

분류에서Dev

mongodb를 다른 파일로 내보내는 모듈-올바른 방법은 무엇입니까? (nodejs에서)

분류에서Dev

CMakeLists를 올바른 방법으로 빌드하는 방법은 무엇입니까?

분류에서Dev

MatDialog (Angular Material)를 올바른 방법으로 단위 테스트하는 방법은 무엇입니까?

분류에서Dev

Firebase 인증 방법으로 오류를 확인하는 올바른 방법은 무엇입니까?

분류에서Dev

올바른 방법으로 어레이를 검색하는 방법은 무엇입니까?

분류에서Dev

DialogFragment를 올바른 방법으로 사용하는 방법은 무엇입니까?

분류에서Dev

Android 프로젝트의 예외를 Firebase에 자동으로보고하는 방법은 무엇입니까?

분류에서Dev

URL의 점 문자에 대해 Rails로 올바른 경로를 작성하는 방법은 무엇입니까?

분류에서Dev

올바른 방법으로 경로를 만드는 방법은 무엇입니까?

분류에서Dev

다른 문자열 길이로 올바른 크기의 태그를 얻는 방법은 무엇입니까?

분류에서Dev

'유효 다트'이후에 오류와 예외를 모두 잡는 올바른 방법은 무엇입니까?

Related 관련 기사

  1. 1

    올바른 방법으로 예외를 포착하는 방법은 무엇입니까? [초보자]

  2. 2

    여러 대화 상자를 올바른 방법으로 닫는 방법은 무엇입니까?

  3. 3

    Android에서 회전 된보기를 올바른 방향으로 이동하는 방법은 무엇입니까?

  4. 4

    초기 데이터를 새 창으로 전달하는 올바른 방법은 무엇입니까?

  5. 5

    QList를 초기화하는 올바른 방법은 무엇입니까?

  6. 6

    CherryPy로 모든 예외를 포착하는 방법은 무엇입니까?

  7. 7

    자기 객체를 참조하는 올바른 방법은 무엇입니까

  8. 8

    Linux에서 CPU 속도를 보는 올바른 방법은 무엇입니까?

  9. 9

    포착 된 예외를 저장하고 시스템 종료 처리 목적으로 함수 외부에서 사용하는 올바른 방법은 무엇입니까?

  10. 10

    내 숫자 변수를 초기화하는 올바른 방법은 무엇입니까?

  11. 11

    Vue.js 3 내 숫자 변수를 초기화하는 올바른 방법은 무엇입니까?

  12. 12

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

  13. 13

    자바 스크립트에서 전역 변수를 올바른 방법으로 선언하는 방법은 무엇입니까?

  14. 14

    UEFI로 Ubuntu를 올바른 방법으로 다시 설치하는 방법은 무엇입니까?

  15. 15

    UEFI로 Ubuntu를 올바른 방법으로 다시 설치하는 방법은 무엇입니까?

  16. 16

    double 변수에 포함 된 올바른 자릿수를 인쇄하는 방법은 무엇입니까?

  17. 17

    RASA의 API (rasa.core.processor-예외 발생)를 사용하는 올바른 방법은 무엇입니까?

  18. 18

    모든 화면에서 현재 Firebase 사용자를 확보하는 올바른 방법은 무엇입니까?

  19. 19

    mongodb를 다른 파일로 내보내는 모듈-올바른 방법은 무엇입니까? (nodejs에서)

  20. 20

    CMakeLists를 올바른 방법으로 빌드하는 방법은 무엇입니까?

  21. 21

    MatDialog (Angular Material)를 올바른 방법으로 단위 테스트하는 방법은 무엇입니까?

  22. 22

    Firebase 인증 방법으로 오류를 확인하는 올바른 방법은 무엇입니까?

  23. 23

    올바른 방법으로 어레이를 검색하는 방법은 무엇입니까?

  24. 24

    DialogFragment를 올바른 방법으로 사용하는 방법은 무엇입니까?

  25. 25

    Android 프로젝트의 예외를 Firebase에 자동으로보고하는 방법은 무엇입니까?

  26. 26

    URL의 점 문자에 대해 Rails로 올바른 경로를 작성하는 방법은 무엇입니까?

  27. 27

    올바른 방법으로 경로를 만드는 방법은 무엇입니까?

  28. 28

    다른 문자열 길이로 올바른 크기의 태그를 얻는 방법은 무엇입니까?

  29. 29

    '유효 다트'이후에 오류와 예외를 모두 잡는 올바른 방법은 무엇입니까?

뜨겁다태그

보관