728x90
반응형
SMALL
1. 예외처리
- 예외가 발생할 수 있는 코드를 try 블록으로 감싸고, 예외 발생 시 처리할 코드를 catch 블록에서 정의
try {
예외가 발생할 것으로 예상되는 문장
...
...
}catch(error 객체){
예외가 발생했을 때 처리할 문장
...
...
}finally{
예외와 관계없이 무조건 실행할 문장
}
1-1. try 블록
- 예외가 발생할 수 있는 코드를 작성하는 블록
- 이 블록 내에서 예외가 발생하면, JavaScript 엔진은 즉시 실행을 중단하고 catch 블록으로 이동
1-2. catch 블록
- 예외가 발생했을 때 처리할 코드를 작성하는 블록
- 이 블록은 예외 객체를 인자로 받고, 이 객체에는 예외에 대한 정보가 포함
1-3. finally 블록
- 선택적으로 실행될 코드 블록
- 이 블록은 try 블록이나 catch 블록에서 반환되기 전에 항상 실행
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>예외처리</title>
</head>
<body>
<h2>예외처리</h2>
<script>
function readFile(path){
throw new Error('파일 경로를 찾을 수 없음')
return '파일경로를 참조하여 파일을 생성함' // 실행되지 않음
}
function processFile(path){
let content;
try{
content = readFile(path); // 에러발생(throw ~)
}catch(error){
console.log(error)
content = '기본내용'
}finally{
console.log('에러의 발생 여부와 관계없이 실행할 문장을 작성했음')
}
const result = '결과: ' + content
return result
}
const result = processFile('경로')
console.log(result)
</script>
</body>
</html>
✅ 다음과 같이 함수를 작성했을 때 호출되어 출력되는 순서를 예상하여 보자.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>예외처리2</title>
</head>
<body>
<h2>예외처리2</h2>
<script>
function func1(){
console.log('func1이 호출되었어요!')
throw new Error('에러발생!')
}
function func2(){
try{
func1()
}catch(error){
console.log('예외처리완료!')
throw error
}
}
function func3(){
try{
func2()
}catch(error){
console.log('여기에서 또 예외처리 완료!')
}
}
func3()
console.log('프로그램이 정상적으로 종료되었습니다.')
</script>
</body>
</html>
결과
실행원리
MDN: try...catch
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/try...catch
try...catch - JavaScript | MDN
try...catch 문은 실행할 코드블럭을 표시하고 예외(exception)가 발생(throw)할 경우의 응답을 지정합니다.
developer.mozilla.org
728x90
반응형
LIST
'Web > JavaScript' 카테고리의 다른 글
[JavaScript] Promise객체 - 2️⃣ promise 콜백함수 축약형으로 작성하기! (0) | 2023.04.20 |
---|---|
[JavaScript] Promise객체 - 1️⃣ 비동기 작업 처리란? & Promise 객체 생성과 콜백함수 사용 (0) | 2023.04.20 |
[JavaScript] map 객체 - has(), get(), set(), delete(), clear(), entries(), values() (0) | 2023.04.20 |
[JavaScript] 세트(Set) - add(), has(), delete(), clear() (0) | 2023.04.20 |
[JavaScript] Spread 연산자( ... ) (0) | 2023.04.20 |