기술적으로 문제를 해결하는 방법에 대한 조언을주는 것 이외에는 잠시 시간을내어 첫 번째 장소에서 "나쁜 습관"으로 간주되는 이유를 설명하고자합니다.
Error
클래스가 무엇인지 명확히 설명해 보겠습니다.
java에서는 오류 및 예외 (기본 유형)가 발생합니다. 위의 중 하나를 던지는 것은 throw
키워드를 사용하여 수행됩니다. 기본 클래스 인 java.lang.Throwable
을 확장하는 모든 클래스가 throw 될 수 있습니다.
기본 Throwable
클래스를 상속하는 클래스는 Exception
및 Error
입니다. 그 둘 사이의 차이점은 문서화에 설명되어 있습니다 :
오류는 는 합리적 응용 프로그램이라면 파악하려고 시도해서는 안되는 중대한 문제를 나타내는 것을 의 Throwable의 서브 클래스입니다. 과 같은 오류는 비정상적인 조건입니다. [...]
Source
클래스 예외와 그 서브 클래스는 보통의 어플리케이션 이 캐치 될 가능성이있는 조건을 나타내는 것을 의 Throwable 의 한 형태 .
Source
이상 설명한 바와 같이, 오류와 예외로 인해 서로 다른 기원 분리된다.
Error
은 일반적으로
에서 응용 프로그램을 복구 할 수없는 문제를 나타냅니다. 그러므로, 그들은 잡히면 안된다.
RuntimeException
에 대해서도 마찬가지이지만, 상위 계층의 문제 (예 : 메소드)를 나타내는 데 사용됩니다. Error
은 낮은 수준의 문제 (예 : 런타임)를 나타냅니다.
그래서, 지금 당신은 당신이 예외는 복구 할 수있는 오류를 포착해야
단지 것을 이해하는 것이, 질문에 대한 대답은 명확해야한다. 예, 응용 프로그램에서 복구 할 수 있기 때문에 UnsatisfiedLinkError
을 잡는 것이 매우 합리적입니다.
는 I 위 (보다 구체적으로 예로) 및 article on my Blog 일부 확장 정보 덮여있다.
올바른 convetion에 대해서는 잘 모르겠지만, 시도해보기 전에 파일이 존재하는지 테스트 할 수 있습니다 ... ['new File ("path/helloworld.dll") .exists()'] (http : // docs. oracle.com/javase/7/docs/api/java/io/File.html#exists%28%29) .... (편집 : 잘못된 제안, 내가 코드를 잘못 읽었습니다.) –
나는 그것을 받아 들일 수있는 해결 방법이라고 생각합니다. –
@Slanec 당신은'java.library.path'에있는 모든 디렉토리를 검색해야 할 것입니다. –