2010-03-22 7 views
1

나는 겉으로보기에 임의의 오류를 기록하고 싶습니다. 필자는 Delphi 작성 COM DLL을 사용하고 있습니다. 어떻게해야합니까? Application.OnException 이벤트 처리기를 사용할 수 있습니까? COM DLL 소스를 제어 할 수 있지만 호출하는 응용 프로그램은 제어 할 수 없습니다.Application.OnException은 COM Dll에서 작동합니까?

답변

5

아니요 DLL은 응용 프로그램이 아니기 때문에 응용 프로그램 변수가 없습니다.

DLL에서 예외를 처리하는 올바른 방법은 try..except 블록입니다. 가장 기본적인 기술은 수출 된 각 함수 주위에 try..except 블록을 두어 DLL 외부로 전파되기 전에 오류를 잡아내는 것입니다.

OnException이라는 자체 전역 함수를 만들고 Except 블록에서 호출하고 예외를 전달하는 등의 작업을 시도해 볼 수 있습니다. 이것이 기본적으로 Application.OnException의 기능입니다. try..except 블록 안에 넣기 위해 호출 스택의 바닥 근처에 알려진 단일 지점이 있으므로 자동으로 처리 할 수 ​​있습니다.

2

COM DLL에서 Application.OnException이 작동하지 않는다고 생각합니다. 당신은 낮은 수준의 물건으로 바로 가야 할 수도 있습니다. 시스템 유닛에서 RaiseExceptionProc을 살펴보십시오. 그것은 당신이 원하는 정보를 얻을 수 있도록해야합니다.

관련 문제