오류와 예외의 차이점은 무엇입니까? [복제]
가능한 중복 :
예외와 오류 사이의 차이점
Java에서 오류와 예외를 어떻게 구별 할 수 있습니까?
오류는 "합리적인 응용 프로그램이 파악하려고하지 않아야하는 심각한 문제를 나타냅니다."
동안
예외는 "합리적인 응용 프로그램이 잡을 수있는 조건을 나타냅니다."
RuntimeException
하위 클래스 와 함께 발생한 오류 는 unchecked
예외입니다. 다른 모든 예외 클래스는 checked
예외입니다.
확인 된 예외는 일반적으로 프로그램이 복구 할 수있는 예외이며 프로그래밍 방식으로 이러한 예외를 복구하는 것이 좋습니다. 예는 FileNotFoundException
, ParseException
프로그래머는 try-catch 블록을 사용하여 이러한 예외를 확인하거나 호출자에게 다시 던질 것으로 예상된다 등
반면에 우리는 확인되지 않은 예외가 있습니다. 이것들은 모든 것이 정상이라면 일어나지 않지만 일어날 수있는 예외입니다. 예는 ArrayIndexOutOfBoundException
, ClassCastException
, 등 많은 응용 프로그램을 사용 try-catch
또는 throws
절에 대한 RuntimeExceptions
& 자신의 서브 클래스 만이 그렇게 할 필요가 없습니다 언어의 관점에서. a에서 복구하는 RuntimeException
것이 일반적으로 가능하지만 클래스 / 예외를 설계 한 사람은 최종 프로그래머가 그러한 예외를 확인할 필요가없는 것으로 간주합니다.
오류 는 또한 확인되지 않은 예외이며 프로그래머는 이러한 작업을 수행 할 필요가 없습니다. 실제로 try-catch
오류에 대한 절 을 사용하는 것은 좋지 않습니다 . 대부분의 경우 오류 복구가 불가능하며 프로그램을 종료해야합니다. 예는 OutOfMemoryError
, StackOverflowError
등입니다.
오류는 검사되지 않은 예외이지만 처리하지 말아야하지만 RuntimeExceptions
코드에서 (검사되지 않은 예외도) 처리하는 것이 좋습니다. 확인 된 예외는 코드에서 처리해야합니다.
Error
그리고 Exception
모두 extend Throwable
이지만 Error
치명적인 시나리오에서 대부분 JVM에 의해 발생하며 응용 프로그램이 해당 오류를 복구 할 방법이 없습니다. 예를 들어 OutOfMemoryError
.
응용 프로그램조차도 향상시킬 수는 Error
있지만 좋은 습관 은 아니지만 응용 프로그램은 복구 가능한 조건에 대해 확인 된 예외와 프로그래밍 오류에 대한 런타임 예외를 사용해야합니다.
오류는 대부분 처리 할 수없는 것입니다.
예외는 당신에게 무언가를 할 수있는 기회를주기위한 것입니다. 다른 것을 시도하거나 로그에 쓰는 것과 같습니다.
try{
//connect to database 1
}
catch(DatabaseConnctionException err){
//connect to database 2
//write the err to log
}
일반적으로 오류는 발생 시점을 제어하거나 추측 할 수없는 오류입니다. 예외를 추측하고 처리 할 수 있습니다. Java에서 예외 및 오류는 Throwable의 하위 클래스입니다. 프로그램 제어에 따라 차별화됩니다. 프로그래머가 추측하여 처리 할 수없는 OutOfMemory 오류와 같은 오류입니다. 예를 들어, 코드에서 사용할 수없는 파일을 찾는 경우 IOException이 발생합니다. 이러한 인스턴스 프로그래머는이를 추측하여 처리 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/5813614/what-is-difference-between-errors-and-exceptions
'programing tip' 카테고리의 다른 글
이미 행에있는 내용을 완료하기 위해 bash 기록 완료를 어떻게 변경합니까? (0) | 2020.07.02 |
---|---|
HTML (0) | 2020.07.02 |
Math.random () 설명 (0) | 2020.07.02 |
종속성 속성이란 무엇입니까? (0) | 2020.07.02 |
왜 (0-6)이 -6 = False입니까? (0) | 2020.07.02 |