에러 발생에 대배하지 않으면 프로그램이 종료됨
console.log('에러 발생 전');
// ⚠️ 오류를 발생시키는 코드
(3).split('');
// 출력되지 않음
console.log('에러 발생 후');
try ~ cath 문
try 블록
catch 블록
const arr = ['ABC', '가나다', 123, '123'];
function getLetterArray (str) {
  // 💡 인자로 어떤 타입의 값이 주어질지 모르는 상황
  try {
    return str.split('');
  } catch (e) {
    console.error('🛑 에러!!', e);
    return [];
  }
}
arr.forEach(i => {
  console.log(getLetterArray(i));
});
finally 블록
function connect () { console.log('☀️', '통신 연결'); }
function disconnect () { console.log('🌙', '통신 연결 해제'); }
function sendArray (arr) { console.log('전송', arr); }
function sendStringAsArray (str) {
  connect();
  try {
    sendArray(str.split(''));
    return true;
  } catch (e) {
    console.error('🛑 에러!!', e);
    return false;
  } finally {
    // 💡 전송 성공 여부와 관계없이 연결은 끊어야 함
    disconnect();
    console.log('- - - - - - - -');
  }
  // ❓ 이곳에 넣는 것과 무엇이 다른가?
  // 아래로 대체하여 실행해 볼 것
  // disconnect();
  // console.log('- - - - - - - -');
}
['ABC', '가나다', 123, '123'].forEach(i => {
  console.log(
    sendStringAsArray(i) 
    ? '[성공]' : '[실패]', '\\n\\n'
  );
});