JS_예외처리_2

dev.dave·2023년 7월 29일

Javascript

목록 보기
105/167

자바스크립트 예외처리 2/4

try catch , Error 객체


일반코드

function f2(){
console.log('f2 start');
console.log('f2 end');
}

function f1(){
console.log('f1 start');
f2();
console.log('f1 end');
}

console.log('will : f1');
f1();
console.log('did : f1');

//실행 잘됨

throw 적용

function f2(){
console.log('f2 start');
throw '에러';
console.log('f2 end');
}

function f1(){
console.log('f1 start');
f2();
console.log('f1 end');
}

console.log('will : f1');
f1();
console.log('did : f1');

//throw를 넣으면
//throw 밑의 코드는 실행되지않는다.
//즉, 저 f2호출해서
//f2스타트 까지 찍히고 throw에러 하면
그뒤로는 찍히지않는다.
//왜냐면
//파괴가 계속일어나기때문
//즉,f1에돌아와서도 f1 end 도 실행 안되고

//쭉쭉 다파괴

예외 처리

try catch

function f2(){
console.log('f2 start');
throw '에러';
console.log('f2 end');
}

function f1(){
console.log('f1 start');
try{
f2();
}catch(e){
console.log(e);
}
console.log('f1 end');
}

console.log('will : f1');
f1();
console.log('did : f1');

//일단 저기 trow에러 하고나서
// 밑부분(f2 end)은 실행이 안되고
//try 사이에 감싸준 f2부분이 무슨의미냐면
//트라이안의구문은 에러가나도 캐치를해서넘긴다
//즉 밑부분이 다 실행이된다는뜻,,,
//그래서 캐치로해서 넘기면
//다 처리가 됬기떄문에
//밑에 콘솔이 찍히고(f1 end)
//따라서 쭉쭉 다 실행이 됨


이번엔 좀 다른부분에 트라이 캐치 적용하면

function f2(){
console.log('f2 start');
throw '에러';
console.log('f2 end');
}

function f1(){
console.log('f1 start');
f2();
console.log('f1 end'); //파괴
}

console.log('will : f1');
try{
f1();
}catch(e){
console.log(e);
}
console.log('did : f1');

//이렇게 하면
//f1을 트라이 캐치하는거기때문에
//f1에서 시작되고
//f2시작되서 에러찍고
//f1엔드는 안찍히고 파괴되고
//다시 f1호출하는데로 돌아오게되죠(스택에 그렇게 쌓였기때문에 스택이 다빠지고 f1으로돌아와서 처리를 하는상황)
//아무튼 그래서 나머지 맨밑에 로그는 트라이 캐치로 처리되서 나머지가 찍히는거다


좀더 정확한 코드법
에러 객체 이용하기!

function f2(){
console.log('f2 start');
throw new Error('에러');
console.log('f2 end');
}

function f1(){
console.log('f1 start');
f2();
console.log('f1 end'); //파괴
}

console.log('will : f1');
try{
f1();
}catch(e){
console.log(e);
}
console.log('did : f1');

저 에러객체에는 해당하는 콜스택의 정보가 담겨있다.
즉, 로그가 담겨있다는 말이다.
즉, 어디서부터호출되어서가는지 그 로그정보를 볼수있다는 의미임
어떤파일의 몇번째 줄에 에러가있고
그 상위함수는 어디고이런걸 로그로 볼수있다.
즉, 어디서 발생했는지 알수있다는!!!

profile
🔥개인 메모 / 다른블로그 자료 참조 / 다른블로그 자료 퍼옴 (출처표기) /여기저기서 공부 했던 내용 개인메모 & 참고 / 개인 기록 용도 블로그 입니다.🔥

0개의 댓글