페이지가 잘못된 URL 일 때 함수를 호출하면 콘솔에 메시지를 기록하고 스크립트 실행을 중단해야합니다. 어떻게해야합니까?
URL이 허용되지 않는 경우 문제의 설명과 함께 error을 던집니다. 예 :
throw new Error("operation x not supported at this page location");
이렇게하면 메시지가 콘솔에 기록됩니다. 이없는 제어 try...catch 문 또는 throw
문 또는 오류를 throw 할 때 실행을 중지시키는 모든 함수 호출이 있는지 확인하십시오.
주석에서 언급했듯이 예외를 throw해도 시작되었지만 완료되지 않은 비동기 작업으로 아직 콜백이 취소되지 않습니다.
오류가 발생했을 때 try...catch
문이 적용되면 throw
문 뒤에 나오는 (기타) 코드를 더 이상 실행하지 않고 중개 함수 호출을 다시 시작하지 않고 제어 catch 문을 사용하여 실행을 다시 시작합니다. 응답에서
편집 댓글을 :
반환하지 않는 함수 내에서 그것을 잡는없이 throw
문을 실행하는 함수입니다. 즉, 호출 코드에서 호출이 수행 된 직후 값을 반환하지 않고 실행을 다시 시작하지 않는다는 것입니다.
사용자가 작성한 try 블록이 오류를 던진 함수에 대한 직접 또는 간접 호출을 둘러싸는 경우 호출 스택은 try 블록이 실행될 때 유효하게 복원됩니다. try 블록 내의 함수 호출 용으로 작성된 모든 스택 프레임은 호출 스택에서 팝핑되고 호출 된 함수를 더 이상 실행하지 않고 삭제됩니다. try 블록과 관련된 catch 블록을 사용하여 catch 매개 변수로 전달 된 오류를 전달하거나 catch 블록이 제공되지 않은 경우 finally 블록에서 실행이 다시 시작됩니다. 시스템은 try 블록 내부에 던져진 오류를 콘솔에 자동으로 기록하지 않습니다.
작성된 try 블록이 없으면 모든 호출 스택 프레임이 팝되고 스레드가 종료되고 발생하는 오류가 콘솔에 기록됩니다. 따라서 try 블록 외부에 에러를 던지면 exit 함수를 호출하지 않고 실행을 중지합니다.
는
파이썬에서 try...cacth
의 등가는 약간 다른 구문 throw
에 사용되는 raise
문 try...except
것으로 보인다.
예, JS (및 Python)에서 예외가 작동하는 방식입니다. throw는 가장 가까운'catch' 핸들러가 될 때까지 코드 실행을 중단합니다. – Bergi
코드의 성격 (비동기 또는 동기화)을 고려해야합니다. 예를 들어 HTTP 요청 후에 오류를 던지더라도 요청이나 관련된 콜백이 중지되지 않습니다. – MinusFour
@Bergi 나는 그것을 기대하지 않았다. 나는'catch '를 사용하여 오류를보고 나서 종료 할 수 있다고 생각했습니다. 내 함수에서 그것을 사용하고 여전히 개체가 반환됩니다. – Melab