Java 예외 처리 #1

예외

오류: 오작동 또는 하드웨어 오류로 인해 응용 프로그램 실행 실패
예외: 프로그램 자체에서 발생하는 오류로 오류가 아닙니다.

예외 및 예외 클래스

Checked Exception: 컴파일러가 처리해야 하는 예외입니다.
일반적인 예외에는 예를 들어 파일 입/출력과 같은 작업 중에 발생할 수 있는 IOException 및 ClassNotFoundException이 포함됩니다.
일반 예외는 try-catch 문이나 throws 키워드를 사용하여 부모 메서드에 예외를 throw하여 처리해야 합니다.

실행 예외(확인되지 ​​않은 예외): 컴파일러가 예외 처리를 강제하지 않는 예외입니다.
실행 예외에는 NullPointerException, ArrayIndexOutOfBoundsException 및 ClassCastException이 포함됩니다.
실행 예외는 try-catch 문으로 처리할 필요가 없으며 throws 키워드로 예외를 발생시키는 것은 선택 사항입니다.
실행 예외는 프로그래밍 오류나 논리적 오류로 인해 발생하는 예외이므로 이러한 예외가 발생할 수 있는 코드에서 직접 예외를 처리하는 것이 좋습니다.

두 예외 모두 예외 처리는 프로그램의 안정성을 높이는 가장 좋은 방법입니다.
예외 처리 코드는 일반적인 예외 처리가 필수적이기 때문에 필수적입니다.
실행 예외는 강제로 예외 처리를 하지는 않으나 프로그램 안정성을 높이기 위해 예외 처리 코드를 추가하는 것을 권장합니다.


클래스를 찾을 수 없음

“클래스를 찾을 수 없음”은 Java 프로그램에서 발생할 수 있는 예외 중 하나입니다. 이 예외는 클래스를 찾을 수 없을 때 발생하며 일반적으로 다음과 같은 경우에 발생합니다.

클래스가 존재하지 않는 경우: 클래스 이름을 잘못 입력한 경우, 클래스 파일을 삭제한 경우 등

클래스 로딩이 실패한 경우: 클래스 파일은 존재하지만 클래스 종속성 또는 클래스 로딩 순서로 인해 클래스 로딩이 실패합니다.

잘못된 클래스 경로 설정: 클래스 파일의 위치를 ​​찾을 수 없는 경우입니다. 이는 일반적으로 잘못된 클래스 경로 설정으로 인해 발생합니다.

찾을 수 없는 클래스에 대한 예외는 일반적으로 ClassNotFoundException 예외 클래스에 의해 처리됩니다. 예외 처리 방법으로 try-catch 블록을 사용하여 예외를 처리합니다.
throws 키워드를 사용하여 상위 메서드에 예외를 throw할 수 있습니다.
예외를 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있으므로 예외 처리 코드를 추가하는 것이 좋습니다.


널 포인터 예외

“널 포인터 예외”는 Java 프로그램에서 발생할 수 있는 예외 중 하나입니다.
이 예외는 null 값이 있는 개체를 참조할 때 발생합니다.
예를 들어 null 값이 있는 개체의 메서드를 호출하거나 null 값이 있는 개체의 필드를 참조하면 null 포인터 예외가 발생합니다.

널 포인터 예외는 프로그래밍 오류로 인해 발생할 수 있으며 디버깅하기 더 어려운 예외 중 하나입니다.
이 예외는 일반적으로 NullPointerException 예외 클래스에 의해 처리됩니다.
예외 처리 방법으로 try-catch 블록을 사용하여 예외를 처리합니다.
throws 키워드를 사용하여 상위 메서드에 예외를 throw할 수 있습니다.

null 포인터 예외를 방지하려면 개체를 참조하기 전에 항상 null 검사를 수행하십시오.
또한 객체를 생성할 때 null 값으로 객체를 생성하지 않도록 주의해야 합니다.
null 포인터 예외는 Java 프로그래밍에서 가장 일반적인 예외 중 하나이므로 예외 처리 코드를 추가하는 것이 좋습니다.



ArrayIndexOutOfBoundsException

“ArrayIndexOutOfBoundsException”은 Java 프로그램에서 발생할 수 있는 예외 중 하나입니다. 이 예외는 배열 인덱스가 범위를 벗어날 때 발생합니다. 예를 들어 배열의 길이가 5이고 인덱스 5가 참조되는 경우 ArrayIndexOutOfBoundsException이 발생합니다.

ArrayIndexOutOfBoundsException은 일반적으로 배열 길이 또는 인덱스가 잘못 지정된 경우에 발생합니다. 이 예외는 ArrayIndexOutOfBoundsException 예외 클래스를 통해 처리됩니다. 예외 처리 방법으로 try-catch 블록을 사용하여 예외를 처리하거나 throws 키워드를 사용하여 상위 메서드에 예외를 throw할 수 있습니다.

ArrayIndexOutOfBoundsException을 방지하려면 항상 배열의 길이를 확인하고 유효한 인덱스 범위 내의 배열 요소에만 액세스해야 합니다. 또한 for-each 문을 사용할 때 반복 문은 배열의 길이보다 작은 범위에서만 실행되어야 합니다. ArrayIndexOutOfBoundsException은 Java 프로그래밍에서 가장 일반적인 예외 중 하나이므로 예외 처리 코드를 추가해야 합니다.


샘플 테스트를 위해 다음 값을 지정했습니다.


실행 – 구성 실행

2 개의 값을 갖는 대신 다음 출력을 얻습니다.



번호 형식 예외

“NumberFormatException”은 Java 프로그램에서 발생할 수 있는 예외 중 하나입니다. 이 예외는 문자열을 숫자로 변환할 때 발생합니다. 예를 들어 “123a”와 같은 문자열을 숫자로 변환하면 NumberFormatException이 발생합니다.

NumberFormatException은 일반적으로 문자열을 숫자로 변환할 때 형식이 잘못된 문자열을 사용할 때 발생합니다. 이 예외는 NumberFormatException 예외 클래스를 통해 처리됩니다. 예외 처리 방법으로 try-catch 블록을 사용하여 예외를 처리하거나 throws 키워드를 사용하여 상위 메서드에 예외를 throw할 수 있습니다.

NumberFormatException을 방지하려면 문자열을 숫자로 변환하기 전에 항상 문자열의 형식을 확인하고 유효한 형식의 문자열만 숫자로 변환하십시오. 또한 숫자로 환산한 결과가 예상 범위를 벗어나지 않도록 주의해야 합니다. NumberFormatException은 Java 프로그래밍에서 가장 일반적인 예외 중 하나이므로 예외 처리 코드를 추가해야 합니다.


문자열 “100”은 숫자로 변환할 수 있으므로 8행은 정상적으로 실행되지만 변수 data2의 문자열 “a100″은 숫자로 변환할 수 없으므로 다음과 같이 9행에서 NumberFormat 예외가 발생합니다.


ClassCastException

“ClassCastException”은 Java 프로그램에서 발생할 수 있는 예외 중 하나입니다. 이 예외는 유형 캐스팅이 불가능할 때 발생합니다. 예를 들어, 수퍼클래스 유형의 객체를 하위 클래스 유형으로 캐스트하려고 하면 수퍼클래스 객체가 실제로 하위 클래스의 인스턴스가 아닌 경우 ClassCastException이 발생합니다.

ClassCastException은 일반적으로 캐스트 남용으로 인해 발생합니다. 이 예외는 ClassCastException 예외 클래스에 의해 처리됩니다. 예외 처리 방법으로 try-catch 블록을 사용하여 예외를 처리하거나 throws 키워드를 사용하여 상위 메서드에 예외를 throw할 수 있습니다.

ClassCastException을 방지하기 위해서는 타입 변환을 사용할 때 항상 타입을 확인하고 타입 변환이 가능한 경우에만 타입 변환을 수행한다. 또한 객체 타입 정보를 이용하여 타입 변환이 가능한지 항상 확인해야 합니다. ClassCastException은 Java 프로그래밍에서 가장 일반적인 예외 중 하나이므로 예외 처리 코드를 추가해야 합니다.


예제가 실행되면 14행에서 ClassCastException이 발생합니다.
그 이유는 9행에서 Cat 개체를 매개변수로 제공하여 Dog 유형으로 변환할 수 없기 때문입니다.
13행과 15행의 주석을 해제하여 검증을 입력하는 것이 좋습니다.

끝.