-3

raise 명령으로 인해 스택 오버플로가 발생하는 예외가 있습니다. 내가 무엇을해야하는지 알고 위해이 기사를 읽고 : 내가 이해 무엇 http://www.debuggingexperts.com/modeling-exception-handling델파이에서 연속되지 않는 예외 만들기

0xc0000025이 (EXCEPTION_NONCONTINUABLE_EXCEPTION) 잡힐 금지되는 예외를 잡으려고 시도를 의미하는 예외입니다. 내가 맞습니까?

그렇다면 어떤 예외가 계속되는 것으로 정의되는지 알고 싶습니다. 예외는 파스칼에서 정의되었으며 Exception 오브젝트에서 파생되었습니다.

또한이 예외가 처리되는 곳을 찾지 못해서 try-catch 블록을 추가했습니다. 예외가 성공적으로 발견되었습니다. 왜?

편집

는 내가 도움을 필요로하는 특정 상황을 설명하려면 :
예외 정의가 파스칼 코드를 호출하는 C++ 코드가, 그리고 raise 명령은 그것에서 발생합니다.
try-catch 블록을 C++ 코드에 넣기 전에 Pascal의 raise은 스택 오버플로가 발생할 때까지 EXCEPTION_NONCONTINUABLE_EXCEPTION의 1000 배 예외를 발생시킵니다.
try-catch 블록을 C++ 코드에 추가 한 후, 파스칼 코드의 raise이 C++ 코드의 catch 블록으로 반환되었습니다.

  1. 왜 프로세스가 처음 NONCONTINUABLE 예외에 멈추지 않았다 :

    는 지금은이 개 질문이?

  2. C++ 코드의 catch 블록이이 예외를 발생시키지 않은 이유는 무엇입니까?

답변

4

올바른지 여부는 EXCEPTION_NONCONTINUABLE_EXCEPTION은 프로그램이 계속할 수없는 예외에서 계속하려고 시도했음을 의미합니다. 그러나 Delphi에서 이러한 예외를 정의 할 수는 없으므로 문제의 원인은 다른 곳에 있습니다.

사용자 정의 예외 유형의 생성, 제기, 잡기 및 파기 디버깅을 고려하십시오. 프로그램에 포함 된 외부 라이브러리, 특히 델파이 이외의 다른 라이브러리에서 작성된 라이브러리가있는 경우 외부에서 수행 할 작업을 알고 있는지 또는 예외로부터 완전히 보호되어 있는지 확인하십시오.

+0

나는 권리를 확인한 후 질문을 편집하고 질문을 추가했습니다. 내가 쓴 모든 질문에 대답 해 주시겠습니까? 덕분에 . – Aharon

+7

새로운 질문의 성격은 원래의 질문과 완전히 다릅니다. 이미 답을 한 후 공정하게 질문을 변경하지 마십시오. 귀하의 질문을 되돌리고 새로운 질문을 별도로 게시하십시오. 그렇게 할 때 다른 사람들이 문제를 재현하는 데 필요한 최소한의 코드, 즉 예외 정의,'raise'를 호출하는 커피, Delphi 코드를 호출하는 C++ 코드 및 try-catch 블록을 표시하는 것을 고려하십시오. –

+0

왜 나에게 너무 화가 났니? 내가 추가 한 모든 편집 정보는 위에 적혀 있습니다. ** 당신은 ** 질문의 마지막 부분에 답을하지 않았고 좀 더 구체적으로 설명했습니다. 여기서 전체 코드를 제공 할 수는 없으며이 동작이 익숙한 지 알고 싶을뿐입니다. – Aharon

관련 문제