inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

fs로 HTML파일 읽어 제공하기

비동기 방식에서의 에러처리

392

Donggun Jang

작성한 질문수 8

0

안녕하세요! 어제 유투브에서도 질문드렸었는데 잘 이해가 가지 않아 다시 질문드립니다.

184p server1-1.js

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
  res.write('<h1>Hello Node!</h1>');
  res.end('<p>Hello Server!</p>');
});
server.listen(8080);

server.on('listening', () => {
  console.log('8080번 포트에서 서버 대기 중입니다!');
});
server.on('error', (error) => {
  console.error(error);
});

어제 이 부분 에러처리를 try/catch로 하면 안되는건지 질문드렸었는데 server함수가 비동기로 진행되는거라 try/catch 적용하면 안된다고 답변받았었습니다.

 

186p server2.js

const http = require('http');
const fs = require('fs').promises;

http.createServer(async (req, res) => {
  try {
    const data = await fs.readFile('./server2.html');
    res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
    res.end(data);
  } catch (err) {
    console.error(err);
    res.writeHead(500, { 'Content-Type': 'text/plain; charset=utf-8' });
    res.end(err.message);
  }
})
  .listen(8081, () => {
    console.log('8081번 포트에서 서버 대기 중입니다!');
  });

그런데 바로 뒤에서 async를 사용하여 비동기임이 확실한데도 try/catch로 에러처리를 하신 부분이 나와서 잘 이해가 안갑니다..

뒷부분에서는 왜 try/catch를 적용해도 되는건지 궁금합니다!

node.js jwt Socket.io mongodb mysql express socket.io nodejs typescript

답변 1

0

제로초(조현영)

async 함수이지만 저 콜백 함수가 실행될 때는 내부가 동기적으로 순서대로 실행됩니다. try/catch는 동기적 코드거나 await 에러만 catch할 수 있습니다

0

Donggun Jang

server1-1에서

res.writeHead와 res.write의 결과 순서가 바뀔 수 있어서 비동기인건가요??

0

제로초(조현영)

아뇨. on이 이벤트리스너잖아요. 이벤트리스너는 언제 호출될지 모르니 비동기이죠

0

Donggun Jang

아....놓치고있었습니다 감사합니다!

깃헙 질문

0

82

2

강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.

0

78

1

aws - lightsail 이용 관련

0

59

1

4강 http 서버 만들때 ESM방식으로 해도 될까요?

0

83

2

모듈 사용 시 단점이 있나요?

0

84

1

node.js 버전 및 typescript 적용 문의

0

95

2

12.7. 방장기능(강퇴) 질문드립니다.

0

80

2

12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요

0

69

1

12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.

0

77

2

12.7.1스스로 해보기 질문되나요

0

95

3

시퀄라이즈 실습하기 질문드립니다.

0

197

9

<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.

0

97

2

크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.

0

113

2

구매 결제관련 질문입니다 !

0

123

1

다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제

0

134

2

node 설치 방법이 전혀다르게 바뀐것 같습니다.

0

152

2

12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류

0

123

2

무료/프리미엄 동시 소유 시 질문

0

117

1

비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?

0

136

2

10강 cors에러 localhost:4000으로 접속했을때 에러

1

159

2

webstorm 해결할 수 없는 변수 문제

0

155

2

혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?

0

149

2

LightSail 실행 중 오류 질문드립니다!

0

204

2

RedisStore 사용법 질문

0

133

2