LHJ

I'm a FE developer.

4-7. 문장(Statement) / try-catch, throw

21 Nov 2020 » js_beginner

35. try-catch, throw

try-catch

  • 형태:
    try 블록 catch (식별자) 블록
    try 블록 finally 블록
    try 블록 catch (식별자) 블록 finally 블록

  • try 문에서 예외 발생을 인식
  • 예외가 발생하면 catch 블록 실행

      var value;
      try {
          value = ball;
      } catch (error) {
          console.log("catch 실행");
      }
      // catch 실행
    
    1. try 블록에서 ball 을 value 에 할당할 때 ball 변수가 없으므로 에러 발생
    2. 에러가 발생하면 catch(error) 블록 실행
      파라미터 error 에 JS 의 Error 오브젝트 설정
    3. error 는 식별자로 임의의 이름 사용 가능
    4. 에러가 발생할 가능이 있으면 반드시 try-catch를 사용해야 합니다.

에러를 일으키는 코드가 try 문 안에 들어가있지 않다면 해당 프로그램은 죽습니다.
하지만 try 문 안에 에러코드가 들어가있다면, 에러가 발생하더라도 프로그램이 죽지 않고 catch 문을 실행합니다.
이것이 try catch 를 사용하는 목적입니다.

서버에서 데이터를 가져올 때 통신상에서의 에러가 발생할 확률이 높습니다.
따라서 서버에서 데이터를 가져올 때에는, 즉, 통신을 할 때엔 반드시 try 문에 작성을 해야됩니다.

  • finally 블록은 예외 발생과 관계없이 실행

      var sports;
      try {
          sports = ball;
      } catch (error) {
          console.log("catch 실행");
      } finally {
          console.log("finally 실행");
      }
      // catch 실행
      // finally 실행
    
    1. try 에서 에러가 발생하면 catch() 블록을 실행한 후 finally 블록 실행
    2. try 에서 에러가 발생하지 않더라도 finally 블록 실행

throw

에러를 던지는 것이라고 생각하시면 됩니다.
에러를 던지고 catch 문이 잡는 것입니다.

  • 형태 : throw 표현식;
  • 명시적으로 예외를 발생시킴
  • 예외가 발생하면 catch 실행
try {
    throw "예외 발생시킴";
    var sports = "스포츠";
} catch (error) {
    console.log(error);
    console.log(sports);
}
// 예외 발생시킴
// undefined
  1. throw 표현식에 문자열을 작성한 형태
  2. throw 를 만나면 에러가 발생하며 catch 블록이 실행됩니다.
    throw 아래의 코드는 실행하지 않습니다.
    정확히 표현해선 throw 다음 표현식의 세미콜론 이후부턴 실행하지 않습니다.
    자바스크립트 엔진은 개행된 시점 기준으로 세미콜론을 자동으로 넣습니다.
  3. catch(error)의 error 에 throw 표현식의 문자열이 설정됩니다.

try {
    throw {
        msg: "예외 발생시킴",
        bigo: "임의의 이름 사용"
    }
} catch (error) {
    console.log(error.msg);
    console.log(error.bigo);
}
// 예외 발생시킴
// 임의의 이름 사용
  1. throw 표현식에 오브젝트를 작성한 형태
  2. catch(error) 의 error 에 Error 오브젝트가 설정됩니다.
try {
    throw new Error("예외 발생시킴");
} catch (error) {
    console.log(error.message);
}
// 예외 발생시킴
  1. throw 표현식에 Error 오브젝트 작성
    Error() 의 파라미터에 메시지 작성
    오브젝트의 message 에 메시지가 설정됩니다.
  2. catch(error) 의 error 에 Error 오브젝트가 설정됩니다.
  3. error.message 로 작성한 메시지 사용

뒤에서 new 연산자를 다루기 때문에 그때 new 연산자에 대해 공부하고 위 예를 다시 보시면 되겠습니다.
일단 간단하게 말씀드리면 new 연산자는 새로운 Object 를 설정합니다.
그 Object 이름이 Error 입니다.
Error 은 자바스크립트에서 제공하는 오브젝트 이름입니다.
Error 의 인자값, 파라미터로 “예외 발생시킴”을 전달하면 Error 오브젝트의 message 에 해당 파라미터 내용이 설정됩니다.