>

콜백에서 nodejs http.Server 수신 오류를 처리하려고합니다. 그러나 다음 예제가 발생합니다.

내가 server.listen 를 포장하면   try ... catch 로 기능  작동하고 콜백이 오류와 함께 호출됩니다.

try ... catch 없이는 왜 작동하지 않습니까? ? 청취 오류를 잡는 더 좋은 방법이 있습니까?

const { createServer } = require('http')
function build(handler, callback) {
  const server = createServer((req, res) => handler)
  // this will throw RangeError
  server.listen(99999, function (err) {
    if (err) return callback(err, null)
    return callback(null, server)
  })
})

편집 :노드 버전 : 10.12.0

  • 답변 # 1

    제공된 함수 인수가 예상 범위를 벗어나면 일반 노드에서 범위 오류가 발생합니다. 빌드 함수에서 시도/캐치하여 처리 할 수 ​​있습니다

    function build(handler, callback) {
        try {
          const server = createServer(handler);
          // this will throw RangeError
          server.listen(99999, function (err) {
            callback(err, server);
          });
        } catch (e) {
            if (e instanceof RangeError) {
                // handle your special range rrrors
            } else {
                // handle all your other errors
            }
        }
    };
    
    

    또한 핸들을 createServer에 직접 전달할 수 있으며 오류 콜백의 경우 콜백 결과를 반환 할 필요가 없습니다

  • 이전 c++ - 코난으로 빈 디렉토리를 내보내는 방법이 있습니까?
  • 다음 angular - 컴파일하지 못했습니다 /src/app/appmodulets 모듈을 찾을 수 없음 - 오류 : 비어있는 종속성 (요청 없음)