찾다

 >  Q&A  >  본문

node.js - Express의 전역 예외 처리

1. 라우팅 예외를 캡처하기 위한 다음 서버 구성이 올바른가요?
서버.js

으아악

2. 다음은 약속이 없는 경우(async/await) 예외가 정상적으로 발생하고 서버
xxxRouter.js

에 캡처됩니다. 으아악

하지만 promise(async/await)의 경우 콘솔에 오류가 보고되고, 서버에서 캡처할 수 없어 q ​​timeout

이 발생합니다. 으아악

xxxRouter.js

으아악

3. 실제 사용에서는 모든 경로에서 예외를 시도/캐치하고 처리해야 하는데 이는 매우 중복적으로 느껴집니다

으아악
PHPzPHPz2777일 전1696

모든 응답(2)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:37:30

    async 함수는 Promise 개체를 반환합니다. 이 함수에서 발생한 예외는 catch() 또는 then( )를 전달하여 처리해야 합니다. 두 번째 매개변수. Promise 对象,这个函数中抛出的异常需要通过 Promise 对象的 catch()then() 的第 2 个参数来处理。

    当然如想外层函数用了 await,就不是用 catch()then() 来处理了,而是像同步调用那样用 try ... catch ...

    물론, 외부 함수가 await를 사용하는 경우 catch() 또는 then()로 처리되지 않지만 동기화와 마찬가지로 사용 통화를 처리하려면 try ... catch ...를 시도하세요.

    내 생각에 Express 자체는 Promise/yield/async/await를 지원하지 않습니다(새 버전에서 관련 지원이 개발되었는지는 모르겠습니다). 요즘에는 Promise/yield/async/await를 더 잘 지원하는 Koa가 일반적으로 사용됩니다. 🎜

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:37:30

    process.on('unhandledRejection', processErrorHandler);

    회신하다
    0
  • 취소회신하다