try .. catch .. finally로 Javascript 오류 처리
finally
블록을 잘못 사용하고 있고 그 목적의 기본을 이해하지 못한다 는 의혹이 있습니다.
function myFunc() {
try {
if (true) {
throw "An error";
}
} catch (e) {
alert (e);
return false;
} finally {
return true;
}
}
이 함수는 catch
블록 을 실행하고 "오류"를 경고 한 다음 true를 반환합니다. 왜 거짓을 반환하지 않습니까?
finally 블록에는 try 및 catch 블록이 실행 된 후 try ... catch 문 다음의 문이 실행되기 전에 실행할 문이 포함됩니다. finally 블록은 예외 발생 여부에 관계없이 실행됩니다. 예외가 발생하면 catch 블록이 예외를 처리하지 않더라도 finally 블록의 문이 실행됩니다. 더
finally
블록은 항상 실행됩니다 . 블록 true
후에 돌아 try
오십시오.
function myFunc() {
try {
if (true) {
throw "An error";
}
return true;
} catch (e) {
alert (e);
return false;
} finally {
//do cleanup, etc here
}
}
마지막으로 try 블록에서 나갈 때 블록이 실행됩니다. 코드에서 이것은 false를 반환 할 때 발생합니다. 이는 반환 값을 false로 설정하고 함수를 종료하려고합니다. 그러나 먼저 finally를 트리거하고 반환 값을 true로 덮어 쓰는 try 블록을 종료해야합니다.
많은 사람들은 함수 당 하나의 return 문을 갖는 것이 좋은 프로그래밍 관행이라고 생각합니다. 함수의 시작 부분에 var retval을 만들고 함수 전체에서 적절하게 true 또는 false로 설정 한 다음 코드가 하단의 단일 반환으로 올바르게 떨어지도록 코드를 구성하는 것을 고려하십시오.
function getTheFinallyBlockPoint(someValue) {
var result;
try {
if (someValue === 1) {
throw new Error("Don't you know that '1' is not an option here?");
}
result = someValue
} catch (e) {
console.log(e.toString());
throw e;
} finally {
console.log("I'll write this no matter what!!!");
}
return result;
};
getTheFinallyBlockPoint("I wrote this only because 'someValue' was not 1!!!");
getTheFinallyBlockPoint(1);
브라우저의 콘솔에서 이것을 실행하면 원하는 답을 얻을 수 있습니다.
참조 URL : https://stackoverflow.com/questions/286297/javascript-error-handling-with-try-catch-finally
'Development Tip' 카테고리의 다른 글
Angular 2에서 한 구성 요소에서 다른 구성 요소로 객체를 전달하는 방법은 무엇입니까? (0) | 2021.01.07 |
---|---|
float를 위치 형식의 문자열로 변환 (과학 표기법 및 잘못된 정밀도 없음) (0) | 2021.01.07 |
array.contains의 jquery 버전 (0) | 2021.01.07 |
.NET은 Java Properties 클래스에 해당하는 속성 파일을로드하고 구문 분석 할 수 있습니까? (0) | 2021.01.07 |
다른 도메인에서 RESTful 웹 서비스를 사용하기위한 적절한 "철도 방법"은 무엇입니까? (0) | 2021.01.07 |