자바스크립트로 만들어진 함수나 메서드를 테스트할 때 강제로 에러를 만들 수 있다. throw 객체를 사용하여 강제로 에러를 발생시킬 수 있는데 웹브라우저의 개발자모드에서 확인하면 브라우저 에러가 표시되는 것을 확인할 수 있다. throw 는 호출하는 단계에서 try catch 와 같이 사용하여 에러 메세지를 다르게 표시할 수 있고, 사용자에 적당한 에러 메세지를 표시하여 불안감을 해소시킬 수 있다.
자바스크립트 에러 발생 시키기
강제로 에러 만들고 테스트하기
자바스크립트로 코딩을 하다보면 강제로 에러를 만들어 함수나 메서드의 테스트를 할 필요가 있다.
에러처리는 필요하지만 그때그때 생각나서 처리할 때도 있고, 상황이 발생하여 처리할 수도 있다.
프로그램에서 에러가 발생하는 것은 언제가 될지 모르기 때문에 항상 유지보수를 하고 업데이트를 하는 것이지만, 때때로는 만들어진 함수나 메서드에 강제로 에러를 발생시켜 테스트를 할 필요도 있다.
이 때 유용하게 사용할 수 있는 자바스크립트 명령어는 throw 이다.
예외처리
예외처리는 프로그램 개발시 사용하는 대표적인 에러처리 구문이다.
try catch 로 감싼 코드에서 에러가 발생하면 프로그램의 동작에는 영향을 끼치지 않으면서 사용자에 에러가 나타났음을 알린다.
개발단계에서 이미 조치할 수 있는 것들은 했다고 해도 사용자가 많을 경우 언제 어떻게 무엇이 발생할지는 모르는 상황인지라 프로그래밍 언어들은 거의 모두 try catch 구문을 제공하여 에러와 같은 예외처리를 하도록 한다.
throw 또한 예외처리와 에러 등에 사용되는 것으로 throw 가 들어간 구문은 호출한 코드에 메세지를 전달한다.
throw 메세지 던지기
자바스크립트 코드에서 throw 구문을 만난다면 강제로 호출한 곳으로 메세지를 전달하고 다음 구문은 실행을 하지 않는다.
return 과 비슷해 보이지만 throw 는 에러를 발생시키는 구문인 점에서 차이가 있다.
사용법은 아래와 같다.
throw "에러 발생";
또는
throw new Error("에러 발생");
코드 만들기
위의 내용을 가지고 코드를 만들어 본다.
간단한 함수를 만들고 호출을 하되 throw 구문을 사용하여 에러를 전달해 보도록 한다.
var fnGenError = function() {
throw new Error("강제 에러 발생");
return "정상";
};
var messageText = fnGenError();
console.log(messageText);
위의 코드를 보면 return 이 실행할 수 있을 것 같지만 throw 을 만나 메세지를 전달하고 호출된 함수의 실행은 중단한다.
개발자모드에서 직접 메세지를 확인할 수 있다.
정상적인 구문이 아닌 자바스크립트 에러 구문을 표시로 메세지를 출력하는 것을 볼 수 있다.
그런데 메세지의 모양새가 마음에 들지 않는다.
throw 는 예외처리이며 호출한 곳의 try catch 구문과 같이 사용할 수 있다.
아래는 함수를 호출하는 곳의 자바스크립트 구문에 try catch 를 적용한 것이다.
var fnGenError = function() {
throw new Error("강제 에러 발생");
return "정상";
};
try {
messageText = fnGenError();
console.log(messageText);
} catch (e) {
console.log("----- 예외발생 -----");
console.log("예외", e);
}
메세지가 예쁘게 고쳐졌다.
이런 방법을 사용하면 자바스크립트에서 에러가 발생할 경우 브라우저에서 표시되는 에러를 사용자에게 보여주는 에러로 변경하고 구체적인 에러메세지는 서버에 저장하도록 하여 개발자에게 도움을 줄 수 있을 것이다.
'programming > javascript' 카테고리의 다른 글
자바스크립트 confirm 함수 예 아니오 선택하기 (0) | 2022.12.20 |
---|---|
자바스크립트 fetch 함수 사용법 api 파일 이미지 등 데이터 요청하기 (0) | 2022.12.17 |
jquery ajax 순차적 동기 처리 async false 메서드의 실행이 완료될 때까지 기다린다. (0) | 2022.12.13 |
웹사이트 로딩바 만들기 로딩화면으로 기다림 방지 (0) | 2022.11.03 |
자바스크립트 Map 요소 값 삭제하기 Removing value at Map (0) | 2022.06.26 |
댓글