오류의 적절한 사용
상당히 큰 프로젝트에서는 TypeScript를 사용하고 있는데, 이 스크립트의 표준이 무엇인지 궁금합니다.Error
s. 예를 들어 Java에서 인덱스 아웃오브바운드를 전달합니다.
throw new IndexOutOfBoundsException();
TypeScript의 동등한 문장은 다음과 같습니까?
throw new Error("Index Out of Bounds");
다른 어떤 방법이 있을까요?인정된 기준은 무엇입니까?
MDN에 대한 이 링크를 댓글로 올려주셨는데 많은 도움이 된 것 같습니다.ErrorTypes와 같은 것을 매우 상세하게 설명하고 있습니다.
EvalError --- 글로벌 함수 eval()과 관련하여 발생한 오류를 나타내는 인스턴스를 만듭니다.
InternalError --- JavaScript 엔진의 내부 오류가 발생할 때 발생하는 오류를 나타내는 인스턴스를 만듭니다.예: "너무 많은 재귀"
RangeError --- 숫자 변수 또는 매개 변수가 유효한 범위를 벗어날 때 발생하는 오류를 나타내는 인스턴스를 만듭니다.
ReferenceError --- 비활성 참조를 해제할 때 발생하는 오류를 나타내는 인스턴스를 만듭니다.
SyntaxError --- eval()에서 코드를 구문 분석하는 동안 발생하는 구문 오류를 나타내는 인스턴스를 만듭니다.
TypeError --- 변수 또는 매개 변수가 올바른 유형이 아닐 때 발생하는 오류를 나타내는 인스턴스를 만듭니다.
URIerror --- encodeURI() 또는 decodeURI()가 비활성 파라미터를 전달받았을 때 발생하는 오류를 나타내는 인스턴스를 만듭니다.
JavaScript의 범위를 벗어나는 규칙은 다음을 사용하고 있습니다.RangeError
. 유형을 확인하려면 if / other + 를 사용합니다.instanceof
가장 일반적인 것부터 시작해서
try {
throw new RangeError();
}
catch (e){
if (e instanceof RangeError){
console.log('out of range');
} else {
throw;
}
}
예외로 메시지를 내보내고 표시하는 간단한 솔루션입니다.
try {
throw new TypeError("Error message");
}
catch (e){
console.log((<Error>e).message);//conversion to Error type
}
주의.
블록에서 어떤 오차가 발생할 수 있는지 모르면 위는 해결책이 되지 않습니다.이 경우 타입 가드를 사용하여 적절한 오류를 적절하게 처리해야 합니다.@Moriarty 답변을 참조하십시오.
switch 문을 잊지 마십시오.
- 취급을 보증하다
default
. instanceof
슈퍼클래스와 매칭할 수 있습니다.- ES6
constructor
정확한 클래스와 일치합니다. - 읽기 쉽다.
function handleError() {
try {
throw new RangeError();
}
catch (e) {
switch (e.constructor) {
case Error: return console.log('generic');
case RangeError: return console.log('range');
default: return console.log('unknown');
}
}
}
handleError();
언급URL : https://stackoverflow.com/questions/23790509/proper-use-of-errors
'programing' 카테고리의 다른 글
체크박스 이벤트핸들러의 'MouseEvent'가 범용이 아닌 이유는 무엇입니까? (0) | 2023.02.28 |
---|---|
Angular를 사용하여 파일을 다운로드하려면 어떻게 해야 합니까?JS 또는 Javascript? (0) | 2023.02.28 |
API를 비동기/Awit에서 'POST'로 가져오는 올바른 방법 (0) | 2023.02.28 |
url을 통해 json 데이터를 가져와 python(simplejson)에서 사용 (0) | 2023.02.28 |
WooCommerce - 후크에 의해 생성된HTML은 어디서 편집할 수 있습니까? (0) | 2023.02.28 |