예외와 오류의 차이

Anonim

예외와 오류

예기치 않은 동작은 프로그램이 실행 중일 때 발생합니다. 이는 예외 또는 오류로 인한 것일 수 있습니다. 예외는 일반적인 프로그램 흐름을 방해 할 수있는 이벤트입니다. 오류는 회복 불가능한 것으로 간주 될 수있는 조건입니다. 예외는 주로 응용 프로그램 자체와 관련된 반면 오류는 프로그램이 실행중인 시스템과 관련이 있습니다.

예외 란 무엇입니까?

예외는 정상적인 프로그램 흐름을 방해 할 수있는 이벤트입니다. 이름 예외는 "특별 이벤트"에서 비롯됩니다. 예외를 throw하는 것은 예외 객체를 생성하여 런타임 시스템에 전달하는 프로세스입니다. Exception 객체는 예외가 발생한 메소드에 의해 생성됩니다. Exception 객체에는 예외의 유형 및 설명과 같은 유용한 정보가 들어 있습니다. 런타임 시스템이 예외 객체를 받으면 메소드를 호출 한 역순으로 객체를 탐색하여 호출 스택 내에서 예외 객체를 처리하려고하는 사람을 찾으려고 시도합니다. 호출 스택은 예외가 발생한 메소드보다 먼저 호출 된 메소드의 정렬 된 목록입니다. 런타임 시스템은 예외 핸들러가있는 메소드를 찾으면 성공합니다. 예외 처리기는 공식적으로 예외를 처리 할 수있는 코드 블록입니다. 런타임 시스템이 적절한 핸들러를 발견하면 (즉, 예외의 유형이 처리 될 수있는 유형과 일치 함) 예외 핸들러에 예외 오브젝트를 전달합니다. 이를 예외 포착이라고합니다. 그러나 예외를 처리 할 수 ​​없으면 프로그램이 종료됩니다. Java에서는 예외가 Throwable 클래스에서 상속됩니다. 'NullPointerException 및 ArrayIndexOutOfBoundsException은 Java의 두 가지 일반적인 예외입니다.

오류 란 무엇입니까?

오류는 사용할 수있는 것보다 많은 양의 메모리를 필요로하는 프로그램과 같이 회복 불가능한 것으로 간주 될 수있는 조건입니다. 이러한 오류는 런타임에 처리 할 수 ​​없습니다. 오류가 발생하면 프로그램이 종료됩니다. Java에서 오류는 Throwable 클래스를 상속합니다. 오류는 대개 프로그래머 (또는 응용 프로그램)가 포착하려고해서는 안되는 심각한 문제를 나타냅니다. 오류는 단순히 정상적인 상황에서 발생할 것으로 예상되지 않는 이상 상태이므로 단순히 예측할 수는 없습니다. 예를 들어, OutOfMemoryError, StackOverflowError 및 ThreadDead는 이러한 오류입니다. 메소드에는 오류에 대한 핸들러가 없어야합니다.

예외와 오류의 차이점은 무엇입니까?

오류 및 예외는 모두 프로그램 실행 중에 원치 않는 발생입니다. 그러나, 그들은 중요한 차이가 있습니다. 에러는 예측하기 어렵지만 예외는 프로그래머에 의해 예측 될 수 있습니다.예외는 체크하거나 체크하지 않을 수 있습니다. 그러나 오류는 항상 확인되지 않습니다. 예외는 일반적으로 프로그래머에 의한 오류를 나타냅니다. 그러나 오류는 시스템 오류 또는 자원의 부적절한 사용으로 인해 발생합니다. 따라서 응용 프로그램 수준에서 예외를 처리해야하며 가능한 경우에만 오류를 시스템 수준에서 처리해야합니다. 예외를 처리 한 후에는 정상적인 프로그램 흐름으로 되돌아갑니다. 그러나 오류가 잡히더라도 프로그래머는 처음에 오류를 처리하는 방법을 모를 수 있습니다. 일반적인 오류 처리와 달리 예외를 사용하면 오류 처리 코드를 일반 코드에서 분리 할 수 ​​있습니다.