programing

오류의 적절한 사용

newstyles 2023. 2. 28. 23:20

오류의 적절한 사용

상당히 큰 프로젝트에서는 TypeScript를 사용하고 있는데, 이 스크립트의 표준이 무엇인지 궁금합니다.Errors. 예를 들어 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슈퍼클래스와 매칭할 수 있습니다.
  • ES6constructor정확한 클래스와 일치합니다.
  • 읽기 쉽다.

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