try - catch 문장
5398 단어 JavaScript
try-catch
문 구 는 자 바스 크 립 트 에서 이상 을 처리 하 는 표준 방식 이다.기본 문법 은 다음 과 같다.try{
//
} catch(error){
//
}
try
블록 에 있 는 모든 코드 에 오류 가 발생 하면 코드 실행 과정 을 즉시 종료 하고 이 어 실행 catch
블록 을 실행 합 니 다.이때 catch
블록 은 잘못된 정 보 를 포함 하 는 대상 을 받 습 니 다.이 잘못된 상 대 를 사용 하고 싶 지 않 더 라 도 이름 을 지어 야 한다.이 대상 에는 오류 메시지 가 저 장 된 message
속성 과 오류 형식 을 저장 하 는 name
속성 이 포함 되 어 있 습 니 다.마지막 자구
try-catch
문구 에서 선택 할 수 있 지만 finally
자 구 를 사용 하면 코드 는 어떻게 든 실 행 됩 니 다.다시 말 하면 try
문장의 코드 는 모두 정상적으로 실행 되 고 finally
자 구 는 실 행 됩 니 다.오류 로 인해 catch
문 구 를 실 행 했 을 경우 finally
자 구 는 그대로 실 행 될 것 이다.코드 에 finally
자구 가 포함 되 어 있 으 면 try
또는 catch
어구 에 어떤 코드 가 포함 되 어 있 든 지, 심지어 return
문구 가 포함 되 어 있 든 지 간 에 finally
자구 의 집행 을 막 지 않 습 니 다.아래 의 이 함 수 를 보 세 요.function testFinally(){
try {
return 2;
} catch (error){
return 1;
} finally {
return 0;
}
}
이 함 수 는
try-catch
문장의 모든 부분 에 하나의 return
문 구 를 놓 았 다.겉으로 볼 때 이 함 수 를 호출 하면 되 돌아 갑 니 다 2
. 되 돌아 가기 2
의 return
문 구 는 try
구문 블록 에 있 고 이 문 구 를 실행 하 는 데 오류 가 없 기 때 문 입 니 다.그러나 마지막 에 finally
자구 가 하나 더 있 기 때문에 결 과 는 이 return
문 구 를 무시 할 수 있다.이 함 수 를 호출 하면 되 돌아 갈 수 밖 에 없다 는 것 이다 0
.finally
자 구 를 떼 면 이 함 수 는 되 돌아 갑 니 다 2
.코드 에
finally
자구 가 포함 되 어 있 으 면 try
든 catch
구문 블록 에 있 는 return
문 구 는 무시 된다.finally
자 구 를 제공 하면 catch
자 구 는 선택 할 수 있 는 catch
또는 finally
하나 가 되면 된다.오류 형식
코드 를 실행 하 는 동안 발생 할 수 있 는 오 류 는 여러 가지 유형 이 있 습 니 다.모든 오 류 는 대응 하 는 오류 유형 이 있 고 오류 가 발생 하면 해당 유형의 오류 대상 을 던 집 니 다.JS 에는 다음 7 가지 오류 유형 이 있 습 니 다.
그 중에서 Error 는 기본 형식 이 고 다른 오류 유형 은 모두 이 유형 에서 계승 된다.따라서 모든 오류 유형 은 같은 속성 을 공유 합 니 다 (오류 대상 의 방법 은 모두 기본 대상 방법 입 니 다).Error 형식의 오 류 는 매우 드 물 며, 있 으 면 브 라 우 저가 던 진 것 입 니 다.이 기본 유형의 주요 목적 은 개발 자 들 이 사용자 정의 오 류 를 던 질 수 있 도록 하 는 것 이다.
EvalError 형식의 오 류 는
eval()
함 수 를 사용 하여 이상 이 발생 했 을 때 던 집 니 다.만약 에 직접 호출 하지 않 는 방식 으로 eval
속성의 값 을 사용 하거나 eval
속성 에 값 을 부여 한다 면 쉽게 말 하면 eval()
을 함수 로 호출 하지 않 으 면 오 류 를 던 질 수 있 습 니 다. 예 를 들 어:new eval(); // EvalError
eval = foo; // EvalError
실제로 브 라 우 저가 오 류 를 던 져 야 할 때 EvalError 를 던 지 는 것 은 아니다.예 를 들 어 Firefox 4 + 와 IE8 은 첫 번 째 상황 에 대해 TypeError 를 던 지고 두 번 째 상황 은 성공 적 으로 실행 되 며 오류 가 발생 하지 않 습 니 다.
RangeError 형식의 오 류 는 수치 가 해당 범 위 를 초과 할 때 발생 합 니 다.예 를 들 어 배열 을 정의 할 때 배열 이 지원 하지 않 는 항목 (예 를 들 어
-20
이나 Number.MAX_VALUE
을 지정 하면 이러한 오류 가 발생 합 니 다.ReferenceError 형식의 오 류 는 존재 하지 않 는 변수 에 접근 할 때 발생 합 니 다.
SyntaxError 형식의 오 류 는 문법 이 잘못된 JavaScript 문자열 을
eval()
함수 에 입력 할 때 이러한 오 류 를 초래 할 수 있 습 니 다.문법 오류 코드 가 eval()
함수 외 에 나타 나 면 SyntaxError 를 사용 할 수 없습니다. 이 때 문법 오류 로 인해 자 바스 크 립 트 코드 가 즉시 실행 을 중단 할 수 있 습 니 다.TypeError 형식 은 JavaScript 에서 자주 사용 되 며, 변수 에 의외 의 형식 이 저장 되 어 있 을 때 나 존재 하지 않 는 방법 에 접근 할 때 이러한 오 류 를 초래 할 수 있 습 니 다.잘못된 원인 은 다양 하지만 결국은 특정한 유형의 작업 을 수행 할 때 변수의 유형 이 요구 에 부합 되 지 않 기 때문이다.다음은 몇 가지 예 를 보 겠 습 니 다.
var o = new 10; // TypeError
alert("name" in true); // TypeError
Function.prototype.toString.call("name"); // TypeError
가장 자주 발생 하 는 유형 오류 의 경우 함수 에 전 달 된 매개 변 수 는 사전에 검 사 를 거치 지 않 았 고 결과 전송 유형 은 예상 유형 과 일치 하지 않 습 니 다.
URIError 형식의 오 류 는
encodeURI()
또는 decodeURI()
사용 되 며, URI 형식 이 올 바 르 지 않 을 경우 URIError 오류 가 발생 할 수 있 습 니 다.앞에서 말 한 이 두 함수 의 용 착 성 이 매우 높 기 때문에 이런 잘못 도 매우 드물다.잘못된 유형 을 알 고 싶 으 면 아래 와 같이
try-catch
문장의 catch
구문 에서 instanceof
연산 자 를 사용 할 수 있 습 니 다.try{
someFunction();
} catch (error){
if (error instanceof TypeError){
//
} else if (error instanceof ReferenceError){
//
} else {
//
}
}
크로스 브 라 우 저 프로 그래 밍 에서 오류 유형 을 검사 하 는 것 은 처리 방식 을 확정 하 는 가장 간편 한 방법 입 니 다.
message
속성 에 포 함 된 오류 메 시 지 는 브 라 우 저 에 따라 다 릅 니 다.try - catch 합 리 적 사용
try-catch
문구 에 오류 가 발생 했 을 때 브 라 우 저 는 오류 가 이미 처리 되 었 다 고 생각 하기 때문에 본 장 앞에서 토론 한 메커니즘 을 통 해 오 류 를 기록 하거나 보고 하지 않 습 니 다.사용자 에 게 기술 을 이해 하 라 고 요구 하지 않 고 사용자 가 잘못 이해 할 필요 가 없 는 웹 프로그램 에 대해 서 는 이상 적 인 결과 라 고 할 수 있다.그러나 try-catch
우 리 는 자신의 오류 처리 체 제 를 실현 할 수 있다.사용 try-catch
은 우리 가 통제 할 수 없 는 오 류 를 처리 하 는 데 가장 적합 하 다.대형 자 바스 크 립 트 라 이브 러 리 의 함 수 를 사용한다 고 가정 하면 이 함 수 는 의도 적 으로 오 류 를 던 질 수 있 습 니 다.우 리 는 이 라 이브 러 리 의 소스 코드 를 수정 할 수 없 기 때문에 이 함수 에 대한 호출 을 try-catch
구문 에 넣 을 수 있 습 니 다. 만약 에 무슨 오류 가 발생 하면 적당 하 게 처리 할 수 있 습 니 다.자신의 코드 에 오류 가 발생 할 수 있다 는 것 을 명명백백 하 게 알 았 을 때 try-catch
문 구 를 다시 사용 하 는 것 은 적절 하지 않다.예 를 들 어 함수 에 전 달 된 매개 변수 가 수치 가 아 닌 문자열 이 라면 함수 에 오류 가 발생 할 수 있 으 므 로 매개 변수의 유형 을 먼저 검사 한 다음 에 어떻게 할 지 결정 해 야 합 니 다.이 경우 try-catch
문 구 를 사용 하지 않 는 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.