문제

저는 현재 Windows, Linux 및 MacOS X에서 잘 작동하는 Java 크로스 플랫폼 애플리케이션을 개발 중입니다.나는 '충돌'을 감지(및 처리)하는 좋은 방법을 찾으려고 노력 중입니다.Java에서 '충돌'을 감지하고 이에 대응하여 작업을 수행할 수 있는 쉬운 크로스 플랫폼 방법이 있습니까?

'충돌'이란 잡히지 않은 예외를 의미한다고 생각합니다.그러나 코드는 일부 JNI를 사용하므로 잘못된 JNI 코드로 인한 충돌을 포착할 수 있으면 좋겠지만 JVM에만 해당되는 것 같습니다.

도움이 되었습니까?

해결책

간단한 포괄적 처리를 위해 다음 정적 메소드를 사용할 수 있습니다. .Javadoc에서:

정적 공백 setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler 뭐라고)
포착되지 않은 예외로 인해 스레드가 갑자기 종료되고 해당 스레드에 대해 정의된 다른 핸들러가 없을 때 호출되는 기본 핸들러를 설정합니다.

이는 다른 곳에서는 발견할 수 없는 오류나 확인되지 않은 예외를 처리하는 매우 광범위한 방법입니다.

참고 사항: 코드가 문제의 원인에 더 가까운 예외를 포착, 기록 및/또는 복구할 수 있다면 더 좋습니다.나는 완전히 복구할 수 없는 상황(예:하위 클래스 java.lang.오류).다음과 같은 가능성을 피하려고 노력하십시오. 런타임예외 소프트웨어가 살아남는 것이 가능하고 바람직할 수 있기 때문에 완전히 잡히지 않을 것입니다.

다른 팁

포착되지 않은 예외를 처리하기 위해 ThreadGroup.uncaughtException(...) 구현을 제공하는 새로운 ThreadGroup을 제공할 수 있습니다.그런 다음 포착되지 않은 예외를 포착하고 적절하게 처리할 수 있습니다(예:충돌 로그를 집으로 보냅니다).

JNI 측면에서는 도움을 드릴 수 없습니다. JVM을 호출하기 전에 기본 래퍼 실행 파일을 사용하는 방법이 있을 수 있지만 해당 실행 파일은 호출할 수 있는 모든 가능한 JVM과 표시가 충돌하는 방식 및 위치에 대해 알아야 합니다. 충돌 로그 등이 배치됩니다.

이것이 필요한지 확실하지 않지만 네이티브 코드 내에서 예외가 발생했는지 감지할 수도 있습니다.보다 http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/functions.html#wp5234 더 많은 정보를 위해서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top