2016-09-14 3 views
0

파이썬에서 오류가 발생하면 (예 : 함수 인수가 잘못된 데이터 형식이고 형식이 잘못되어 데이터를 조작 할 수 없습니다.) 터미널에 오류를 인쇄하고 sys.exit()을 실행하여 종료하십시오. 나는 오류 처리, 예외 처리 또는 무엇이든지에 대해 배울 생각이 없으므로 그 방법을 사용한다. 자바 스크립트 오류/예외/어떤 처리가 단순 해 보이지만 코드의 실행을 중단하거나 던지게 할 것인가? 그렇지 않다면 어떻게 그럴 수 있습니까?JavaScript에서 실행 중지

내가 말하는 페이지가 특정 URL과 일치하는 경우에만 기능 (확장 코드 집합 전체) 만 작동한다고 가정 해보십시오. 페이지가 잘못된 URL 일 때 함수를 호출하면 콘솔에 메시지를 기록하고 스크립트의 실행을 중단해야합니다. 어떻게해야합니까? try 블록에서 테스트 해 보시겠습니까? 오류/예외 처리에 사용되는 특수 구문을 사용해야합니까?

+0

예, JS (및 Python)에서 예외가 작동하는 방식입니다. throw는 가장 가까운'catch' 핸들러가 될 때까지 코드 실행을 중단합니다. – Bergi

+0

코드의 성격 (비동기 또는 동기화)을 고려해야합니다. 예를 들어 HTTP 요청 후에 오류를 던지더라도 요청이나 관련된 콜백이 중지되지 않습니다. – MinusFour

+0

@Bergi 나는 그것을 기대하지 않았다. 나는'catch '를 사용하여 오류를보고 나서 종료 할 수 있다고 생각했습니다. 내 함수에서 그것을 사용하고 여전히 개체가 반환됩니다. – Melab

답변

0

페이지가 잘못된 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에 사용되는 raisetry...except 것으로 보인다.

+0

이 기능을 사용하면 개체가 반환되지 않습니다. – Melab

+0

그런 다음 오류를 생성하는 함수를 호출하는 함수는 어떻게 중지되어야합니까? 파이썬에서 특정 함수에 잘못된 형식을 전달하는 함수를 작성하면 모든 실행이 중지됩니다. – Melab