logo

Java의 예외 유형

자바에서는 예외 프로그램 실행 중에 발생하여 프로그램 명령의 정상적인 흐름을 방해하는 이벤트입니다. 우리가 원치 않거나 프로그램의 정상적인 코드 실행을 제한하는 버그나 오류를 가리킵니다. 예외 . 이 섹션에서는 다음에 중점을 둘 것입니다. Java의 예외 유형 그리고 둘 사이의 차이점.

예외는 두 가지 방법으로 분류될 수 있습니다.

  1. 내장 예외
    • 확인된 예외
    • 확인되지 않은 예외
  2. 사용자 정의 예외
Java의 예외 유형

내장 예외

예외 이미 사용 가능한 자바 라이브러리 라고 불린다. 내장 예외 . 이러한 예외는 오류 상황을 정의하여 이 오류가 발생한 이유를 이해할 수 있도록 해줍니다. 즉, 크게 두 가지로 분류할 수 있습니다. 확인된 예외 그리고 확인되지 않은 예외 .

확인된 예외

체크됨 예외가 호출됩니다. 컴파일 타임 예외는 컴파일러가 컴파일 타임에 확인하기 때문입니다. 컴파일러는 프로그래머가 예외를 처리하는지 여부를 확인합니다. 프로그래머는 예외를 처리해야 합니다. 그렇지 않으면 시스템에 컴파일 오류가 표시되었습니다.

CheckedExceptionExample.java

 import java.io.*; class CheckedExceptionExample { public static void main(String args[]) { FileInputStream file_data = null; file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/Hello.txt'); int m; while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); } } 

위의 코드에서 우리는 안녕하세요.txt 파일을 저장하고 해당 데이터나 내용을 화면에 표시합니다. 프로그램에서 다음 예외가 발생합니다.

  1. 그만큼 FileInputStream(파일 파일명) 생성자는 FileNotFoundException 그것은 체크 예외입니다.
  2. 그만큼 읽다() 의 방법 파일입력스트림 수업은 던진다 IO예외 .
  3. 그만큼 닫다() 메소드는 IOException도 발생시킵니다.

산출:

Java의 예외 유형

오류를 해결하는 방법은 무엇입니까?

기본적으로 이러한 오류를 해결할 수 있는 두 가지 방법이 있습니다.

1) 기본 메소드에서 예외가 발생합니다. 다음을 사용하여 기본 메소드에서 예외를 선언함으로써 이러한 컴파일 오류를 제거할 수 있습니다. 던지기 자식-부모 관계로 인해 FileNotFoundException이 아닌 IOException만 선언합니다. IOException 클래스는 FileNotFoundException의 상위 클래스이므로 이 예외는 IOException에 의해 자동으로 처리됩니다. 다음과 같은 방법으로 예외를 선언하겠습니다.

작업 관리자 리눅스
 class Exception{ public static void main(String args[]) throws IOException { ... ... } 

코드를 컴파일하고 실행하면 오류가 사라지고 파일의 데이터를 볼 수 있습니다.

Java의 예외 유형

2) 다음을 사용하여 이러한 예외를 처리할 수도 있습니다. 시도 캐치 그러나 위에서 사용한 방식은 올바르지 않습니다. 각 예외 유형에 대해 의미 있는 메시지를 제공해야 합니다. 그렇게 하면 오류를 쉽게 이해할 수 있습니다. 우리는 다음과 같은 방법으로 try-catch 블록을 사용할 것입니다:

Exception.java

 import java.io.*; class Exception{ public static void main(String args[]) { FileInputStream file_data = null; try{ file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/programs/Hell.txt'); }catch(FileNotFoundException fnfe){ System.out.println('File Not Found!'); } int m; try{ while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); }catch(IOException ioe){ System.out.println('I/O error occurred: '+ioe); } } } 

적절한 오류 메시지가 표시됩니다. '파일을 찾을 수 없습니다!' 해당 위치에 해당 파일이 없기 때문에 콘솔에 있습니다.

Java의 예외 유형

확인되지 않은 예외

그만큼 선택 해제됨 예외는 그 반대이다. 확인됨 예외. 컴파일러는 컴파일 타임에 이러한 예외를 확인하지 않습니다. 간단히 말해서, 프로그램이 확인되지 않은 예외를 던지면 우리가 이를 처리하거나 선언하지 않더라도 프로그램은 컴파일 오류를 발생시키지 않습니다. 일반적으로 사용자가 프로그램과 상호 작용하는 동안 잘못된 데이터를 제공하는 경우 발생합니다.

참고: RuntimeException 클래스는 하위-부모 관계로 인해 확인되지 않은 모든 예외를 해결할 수 있습니다.

UncheckedExceptionExample1.java

 class UncheckedExceptionExample1 { public static void main(String args[]) { int postive = 35; int zero = 0; int result = positive/zero; //Give Unchecked Exception here. System.out.println(result); } } 

위 프로그램에서는 35를 0으로 나눴습니다. 코드는 성공적으로 컴파일되지만 런타임 시 ArithmeticException 오류가 발생합니다. 숫자를 0으로 나누면 확인되지 않은 예외인 0으로 나누기 예외가 발생합니다.

xor cpp

산출:

Java의 예외 유형

UncheckedException1.java

 class UncheckedException1 { public static void main(String args[]) { int num[] ={10,20,30,40,50,60}; System.out.println(num[7]); } } 

산출:

Java의 예외 유형

위 코드에서는 위치 7에 있는 요소를 가져오려고 하는데 배열의 길이가 6입니다. 코드는 성공적으로 컴파일되지만 런타임에 ArrayIndexOutOfBoundsException이 발생합니다.

사용자 정의 예외

~ 안에 자바 , 우리는 이미 다음과 같은 몇 가지 내장된 예외 클래스를 가지고 있습니다. ArrayIndexOutOfBoundsException , NullPointerException , 그리고 산술 예외 . 이러한 예외는 사전 정의된 일부 조건에서 트리거되도록 제한됩니다. Java에서는 Exception 클래스를 확장하여 자체 예외 클래스를 작성할 수 있습니다. throw 키워드를 사용하여 특정 조건에 대해 자체 예외를 던질 수 있습니다. 사용자 정의 예외를 생성하려면 다음 사항에 대한 기본 지식이 있어야 합니다. 그만큼 시도 캐치 블록과 던지다 예어 .

다음을 작성해보자 자바 프로그램 사용자 정의 예외를 생성합니다.

UserDefinedException.java

 import java.util.*; class UserDefinedException{ public static void main(String args[]){ try{ throw new NewException(5); } catch(NewException ex){ System.out.println(ex) ; } } } class NewException extends Exception{ int x; NewException(int y) { x=y; } public String toString(){ return ('Exception value = '+x) ; } } 

산출:

Java의 예외 유형

설명:

위의 코드에서는 두 개의 클래스를 만들었습니다. 사용자 정의 예외 그리고 새로운예외 . 그만큼 사용자 정의 예외 우리의 주요 메소드가 있고 새로운예외 클래스는 사용자 정의 예외 클래스입니다. 예외 . 에서 새로운예외 클래스에서 변수를 생성합니다. 엑스 정수 유형으로 구성하고 생성자에서 값을 할당합니다. 해당 변수에 값을 할당한 후 예외 메시지를 반환합니다.

모델 예

에서 사용자 정의 예외 클래스를 추가했습니다. 시도 캐치 차단하다. try 섹션에서는 예외를 발생시킵니다. 즉, 새로운예외 정수를 전달합니다. 값은 NewException 클래스에 전달되고 메시지를 반환합니다. 우리는 catch 블록에서 해당 메시지를 포착하여 화면에 표시합니다.

확인된 예외와 확인되지 않은 예외의 차이점

예 아니오 확인된 예외 확인되지 않은 예외
1. 이러한 예외는 컴파일 타임에 확인됩니다. 이러한 예외는 컴파일 타임에도 처리됩니다. 이러한 예외는 확인된 예외와 정반대입니다. 이러한 예외는 컴파일 타임에 확인 및 처리되지 않습니다.
2. 이러한 예외는 예외의 직접적인 하위 클래스이지만 RuntimeException 클래스에서 확장되지는 않습니다. 이는 RuntimeException 클래스의 직접적인 하위 클래스입니다.
삼. 메소드가 확인된 예외를 발생시키는 경우 코드는 컴파일 오류를 제공합니다. 컴파일러는 자체적으로 예외를 처리할 수 없습니다. 예외가 컴파일러의 알림을 벗어나기 때문에 코드는 오류 없이 컴파일됩니다. 이러한 예외는 프로그래밍 논리에서 사용자가 만든 오류의 결과입니다.
4. 이러한 예외는 대부분 실패 확률이 너무 높을 때 발생합니다. 이러한 예외는 대부분 프로그래밍 실수로 인해 발생합니다.
5. 일반적인 확인 예외에는 IOException, DataAccessException, InterruptedException 등이 포함됩니다. 확인되지 않은 일반적인 예외에는 ArithmeticException, InvalidClassException, NullPointerException 등이 포함됩니다.
6. 이러한 예외는 throws 키워드를 사용하여 전파됩니다. 이는 자동으로 전파됩니다.
7. 확인된 예외를 처리하려면 try-catch 및 try-finally 블록을 제공해야 합니다. 확인되지 않은 예외의 경우 필수는 아닙니다.

우리가 원하지 않거나 프로그램의 정상적인 실행을 제한하는 버그나 오류를 가리킵니다. 예외 .

ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions 등이 카테고리에 속합니다. 내장 예외 . 때때로 내장된 예외만으로는 특정 상황을 설명하거나 설명하기에 충분하지 않습니다. 이러한 상황을 설명하려면 예외 클래스를 하위 클래스로 생성하여 자체 예외를 생성해야 합니다. 예외 수업. 이러한 유형의 예외는 다음 범주에 속합니다. 사용자 정의 예외 .