나는 HTTPS 전송을위한 LWP
패키지와 XML 페이로드의 구문 분석을위한 XML::Simple
패키지를 사용하여 Perl로 작성된 SOAP 클라이언트를 가지고있다. 때로는 XMLin
에 대한 호출이 die()와 함께 실패하고 내 스크립트가 죽어서 이것을 탐지하도록 작성한 모니터링 프로그램에 의해 다시 시작되어야합니다. 이것은 정말로 바람직하지 않습니다. 그래서 Perl이 die 메시지를 잡아낼 수있는 C++ 예외 처리 메커니즘과 같은 기능을 가지고 있는지 궁금 해서요. 오류를보고 무시하고 오류가 발생한 것처럼 스크립트를 계속 보냅니 까? 나는 Perl 도서의 숫자를 읽고 이것을 찾았지만 나는 뭔가를 찾을 수 없었습니다. 이것은 내 응용 프로그램을 죽이고 있지만 절대적으로해야하지 않는 한 내 자신의 XML 구문 분석 코드를 작성하고 싶지 않아.다른 perl 모듈에서 발생하는 다이 메시지를 잡는 것이 가능합니까?
답변
예; 이 작업을 수행하는 기본 메커니즘이 될 것 인 eval
:
sub a { die "BAD"; }
eval { a(); }
print "Survived an exception [email protected]";
. (문서 맨 아래에있는 링크 참조).
감사합니다. – mathematician1975
"die"를 잡을 수는 있지만 catch를 통해 스크립트가 죽는 것을 막을 수는 없습니다. * "__DIE__"훅 루틴이 돌아 오면 예외 처리는 훅이 없을 때와 같이 계속됩니다. "goto", 루프 종료 또는 "die()"를 통해 후크 루틴 자체가 종료되지 않는 한 *
eval {} 블록 내에서 die()를 호출하기 쉬운 루틴을 실행할 수 있습니다. 그래도.
그래서 본질적으로 패키지는 die()를 호출하는 조건을 패키지가 만날 때마다 종료됩니다. 내가 할 수있는 일은 전혀 없다. 오 잘 C + + 버전을 시작하는 것 같습니다 .... – mathematician1975
잘 예, 그 중 두 번 말한 그 평가 제외 – fork0
- 1. 다른 절에서 집계하는 것이 가능합니까?
- 2. perl/perl 모듈에서 ".yml"파일을 사용하는 이유
- 3. incomming 텍스트 메시지를 잡는 방법
- 4. 자식 프로세스가 콘솔에 보내는 메시지를 잡아내는 것이 가능합니까?
- 5. C 모듈에서. perl .pm 모듈로드.
- 6. Erlang에서 예외 메시지를 잡는 방법?
- 7. 다른 프로세스의 콘솔 호출을 가로채는 것이 가능합니까?
- 8. UITabBar를 스크롤하는 것이 가능합니까?
- 9. NB 플랫폼 모듈에서 런타임 예외를 잡는 방법은 무엇입니까?
- 10. boost :: interrupted_exception을 잡는 것이 옳은가요?
- 11. 다른 모듈에서 빈을 autowiring
- 12. 알림을 전환하는 것이 가능합니까?
- 13. UITextField, 텍스트를 첫 줄 아래의 다른 줄로 줄이는 것이 가능합니까?
- 14. perl/shell-script의 iPhone gui 메시지가 가능합니까?
- 15. 복합 키를 깨는 것이 가능합니까?
- 16. 대체 URL을 북마크하는 것이 가능합니까?
- 17. js를 C로 임베드하는 것이 가능합니까?
- 18. WCF로 브로드 캐스트하는 것이 가능합니까?
- 19. 모듈에서 해시를 주 Perl 코드로 가져 오기
- 20. Perl 모듈에서 범위 지정이 어떻게 작동합니까?
- 21. Perl 코어의 모듈에서 버그 기록을 어떻게 확인합니까?
- 22. 다이 또는
- 23. 방향을 잡는 것이 더 좋은 방법은 무엇입니까?
- 24. perl mqseries가 이벤트 메시지를 읽음
- 25. AIFF 오디오 파일의 엔디안을 결정하는 것이 가능합니까?
- 26. xul에서 jquery를 사용하는 것이 가능합니까?
- 27. for 루프를 변경하는 것이 가능합니까?
- 28. Documentum API 호출을 가로채는 것이 가능합니까?
- 29. 이 시나리오에서 액세스 위반을 잡는 것이 안전합니까?
- 30. 일반적인 예외를 잡는 것이 그렇게 나쁘지 않습니까?
자체 오류 처리기와 함께 제공되는 [SOAP :: Lite] (http://p3rl.org/SOAP::Lite)와 같은 상위 수준 SOAP 라이브러리를 사용하십시오. – daxim