728x90


저번 포스팅에서 promise를 사용해서 동기화를 하는 예제를 보았다.

그런데 문제는 promise사용도중에 에러가 나면 어떻게 처리하느냐이다.

이번에는 에러처리를 하는 예제를 보도록 하자.


파일의 구조는 위와 같다.

var axios = require('axios');
var fs = require('fs');

var filename = 'text.txt';
var text = null;

function f1(filename) {
return new Promise((resolve, reject) => {
text = fs.readFile(filename, 'utf8', (err, data) => {
console.log(err)
console.log(data);
if (err === null) {
resolve(data);
} else {
reject(err);
}
});
})
}

function f2(data) {
return new Promise((resolve, reject) => {
console.log('에러없이 데이터 전송됨');
console.log(data);
});
}

function f3(err) {
return new Promise((resolve, reject) => {
console.log('에러 발생됨');
console.log(err);
});
}

f1(filename)
.then(f2)
.catch(f3);

전체 코드이다. 나눠서 보도록하자.


var fs = require('fs');

var filename = 'text.txt';
var text = null;

파일 입출력을 하기 위해서 위와 같은 구조를 사용하도록 하자.


function f1(filename) {
return new Promise((resolve, reject) => {
text = fs.readFile(filename, 'utf8', (err, data) => {
console.log(err)
console.log(data);
if (err === null) {
resolve(data);
} else {
reject(err);
}
});
})
}

파일을 읽어들인다. 만약 에러가 없다면 resolve를 실행한다.

그러나 에러가 있다면 reject를 실행한다.


function f2(data) {
return new Promise((resolve, reject) => {
console.log('에러없이 데이터 전송됨');
console.log(data);
});
}

function f3(err) {
return new Promise((resolve, reject) => {
console.log('에러 발생됨');
console.log(err);
});
}

f2는 resolve로 쓸 함수이고, f3은 reject로 쓸 함수이다.

이제 실행코드를 보자.


f1(filename)
.then(f2)
.catch(f3);

이렇게 원래 캐이스는 f2를, 실패 캐이스는 f3을 해준다.


text.txt는 hihihi라는 데이터가 들어가 있다.


만약 파일이 존재한다면 위와 같이 작동한다.


파일을 지우고 실행해보면 위와같이 에러 케이스가 작동하는걸 확인할 수 있다.


+ Recent posts