오류와 예외의 차이점은 무엇입니까?
중복 가능성:
예외와 오류의 차이
Java에서 오류와 예외를 구별하려면 어떻게 해야 합니까?
에러는, 「합리적인 애플리케이션이 검출하려고 하지 않는 중대한 문제를 나타내고 있습니다」라고 하는 에러입니다.
하는 동안에
예외는 "합리적인 응용 프로그램이 포착하고자 하는 조건을 나타냅니다."
에러와 함께RuntimeException
및 그 서브클래스는unchecked
예외입니다.기타 모든 예외 클래스는 다음과 같습니다.checked
예외입니다.
체크된 예외는 일반적으로 프로그램이 복구할 수 있는 예외이며, 이러한 예외에서 프로그래밍 방식으로 복구하는 것이 좋습니다.예를 들면 다음과 같습니다.FileNotFoundException
,ParseException
프로그래머는 try-catch 블록을 사용하여 이러한 예외를 확인하거나 발신자에게 되돌려야 합니다.
한편, 체크되지 않은 예외가 있습니다.이러한 예외는 모든 것이 정상이라면 발생하지 않을 수 있지만 실제로 발생합니다.예를 들면 다음과 같습니다.ArrayIndexOutOfBoundException
,ClassCastException
, 등. 많은 어플리케이션에서는try-catch
또는throws
에 대한 조항.RuntimeExceptions
언어적 관점에서 보면 그렇게 할 필요가 없습니다.에서의 회복에 주의해 주세요.RuntimeException
일반적으로는 가능하지만 클래스/프로그래머를 설계한 사람들은 최종 프로그래머가 이러한 예외를 확인할 필요가 없다고 생각했습니다.
에러도 체크되지 않은 예외이며 프로그래머는 에러에 대해 아무것도 할 필요가 없습니다.실제로, 를 사용하는 것은 좋지 않은 생각이다.try-catch
에러에 대한 절.대부분의 경우 오류에서 복구할 수 없으며 프로그램을 종료할 수 있어야 합니다.예를 들면 다음과 같습니다.OutOfMemoryError
,StackOverflowError
,기타.
오류는 체크되지 않은 예외이지만 처리하려고 하면 안 됩니다만, 그래도 괜찮습니다.RuntimeExceptions
(선택되지 않은 예외도 포함) 코드입니다.선택한 예외는 코드로 처리해야 합니다.
Error
그리고.Exception
둘 다 연장하다Throwable
, 그러나 대부분Error
치명적인 시나리오에서 JVM에 의해 느려지고 애플리케이션 프로그램이 해당 오류로부터 복구될 방법이 없습니다.예를 들어.OutOfMemoryError
.
어플리케이션에서도,Error
그러나 이는 좋은 방법이 아닙니다.대신 어플리케이션에서는 복구 가능한 상태에 대해서는 체크된 예외를 사용하고 프로그래밍 오류에 대해서는 런타임 예외를 사용해야 합니다.
오류는 대부분의 경우 처리할 수 없는 것입니다.
예외는 다른 작업을 수행하거나 로그에 기록할 수 있는 기회를 주기 위한 것입니다.
try{
//connect to database 1
}
catch(DatabaseConnctionException err){
//connect to database 2
//write the err to log
}
일반적으로 오류는 발생 시기를 제어하거나 추측할 수 없는 것입니다.예외는 추측할 수 있고 처리할 수 있습니다.Java에서 예외 및 오류는 슬로우 가능 하위 클래스입니다.프로그램 제어에 따라 구분됩니다.Out Of Memory Error와 같은 오류는 프로그래머가 추측할 수 없고 처리할 수 없습니다.아키텍처에 따라 동적으로 달라집니다.OS 및 서버 구성여기서 예외 프로그래머는 이를 처리할 수 있으며 응용 프로그램의 잘못된 동작을 방지할 수 있습니다.예를 들어 코드가 사용할 수 없는 파일을 찾는 경우 IOException이 느려집니다.이러한 인스턴스 프로그래머는 추측할 수 있고 처리할 수 있습니다.
언급URL : https://stackoverflow.com/questions/5813614/what-is-difference-between-errors-and-exceptions
'source' 카테고리의 다른 글
Java에서 디렉터리 내용을 삭제하는 방법 (0) | 2022.11.18 |
---|---|
__get__, __set__ 및 Python 기술자에 대해 (0) | 2022.11.18 |
캔 원 앵귤러JS 컨트롤러가 다른 컨트롤러를 호출합니까? (0) | 2022.11.18 |
PHP로 작성된 괜찮은 PHP 파서는 없습니까? (0) | 2022.11.18 |
사전을 값별로 정렬하려면 어떻게 해야 합니까? (0) | 2022.11.18 |