강의 내용중 짧게 설명했지만 이해를 위해서 찾아본
try...catch 함수에 대한 설명
try...catch
문은 실행할 코드블럭을 표시하고 예외(exception)가 발생(throw)할 경우의 응답을 지정합니다.
try {
try_statements
}
[catch (exception_var) {
catch_statements
}]
[finally {
finally_statements
}]
try_statements
실행될 선언들
catch_statements
try 블록에서 예외가 발생했을 때 실행될 선언들
exception_var
catch 블록과 관련된 예외 객체를 담기 위한 식별자
finally_statements
try 선언이 완료된 이후에 실행된 선언들. 이 선언들은 예외 발생 여부와 상관없이 실행된다.
설명
try 선언의 구성은 하나 혹은 그 이상의 선언을 포함한 try 블록 및 catch 항목이나 finally 항목 중 최소한 하나 혹은 둘 다 포함하여 이루어진다. 즉, try 선언에는 세 가지 형식이 존재한다.
try...catch
try...finally
try...catch...finally
catch
블록은 try
블록 안에서 예외가 발생(throw)하는 경우 무엇을 할지 명시하는 코드를 포함합니다. try 블록 (또는 try 블록 내에서 호출된 함수) 내의 명령문이 예외를 throw 하면 제어가 catch 블록으로 이동합니다. try 블록에 예외가 발생하지 않으면 catch 블록을 건너뜁니다.
과제중 사용한 예시코드
try {
const { userId } = jwt.verify({ userId: user.userId}, "sh1014-secret-key"); /// 복호화 겸,
///검증을위한 코드
const user = await User.findById(userId).exec(); /// {userId} 변수선언 후 userId 찾기
} catch (error) {
res.status(401).send({
errorMessage : "로그인 후 사용 하세요",
});
return;
}
res.locals.user = user;
는 무슨 코드인가요? 우리는 토큰에 담긴 userId로 해당 사용자가 실제로 존재하는지 확인했습니다. 이미 데이터베이스에서 사용자 정보를 가져온것이죠.