예외 처리 Java
예외란 무엇입니까? Java?
예외 Java 프로그램 명령의 실행을 방해하고 프로그램 실행의 정상적인 흐름을 방해하는 이벤트입니다. 메소드 내에서 발생한 오류 이벤트 정보를 랩핑하여 런타임 시스템에 전달하는 객체입니다. ~ 안에 Java, 예외는 주로 다양한 유형의 오류 조건을 나타내는 데 사용됩니다.
오류에는 두 가지 유형이 있습니다.
- 컴파일 시간 오류
- 런타임 오류
컴파일 시간 오류는 다시 두 가지 유형으로 분류될 수 있습니다.
- 구문 오류
- 의미론적 오류
구문 오류 예:
선언하는 대신 int a; 당신은 실수로 다음과 같이 선언했습니다. in a; 컴파일러에서 오류가 발생합니다.
예: 변수를 선언했습니다. int a; 몇 줄의 코드 후에 다시 정수를 다음과 같이 선언합니다. int a;이러한 모든 오류는 코드를 컴파일할 때 강조 표시됩니다.
런타임 오류 예
런타임 오류를 예외 오류. 프로그램 실행의 정상적인 흐름을 방해하는 모든 이벤트입니다. 예외의 예로는 산술 예외, Nullpointer 예외, 0으로 나누기 예외 등이 있습니다. Java 개발자의 통제 범위를 벗어난 것입니다.
여기에서 확인하세요 비디오에 접근할 수 없는 경우
왜 예외가 필요한가요?
서버에 액세스하는 프로그램을 코딩했다고 가정해 보겠습니다. 코드를 개발하는 동안 모든 것이 잘 작동했습니다.
실제 생산이 실행되는 동안 서버가 다운되었습니다. 프로그램이 이에 액세스하려고 하면 예외가 발생합니다.
예외 처리 방법
지금까지 우리는 예외가 개발자의 통제 범위를 벗어나는 것을 보았습니다. 하지만 코드 실패를 환경 문제 탓으로 돌리는 것은 해결책이 아닙니다. 예외적인 상황을 처리하는 강력한 프로그래밍이 필요합니다. 이러한 코드는 다음과 같이 알려져 있습니다. 예외 처리기.
이 예에서는 서버가 다운되면 백업 서버에 연결하는 것이 좋은 예외 처리입니다.
이를 구현하려면 서버에 연결하는 코드를 입력합니다(기존 if 및 else 조건 사용). 서버가 다운되었는지 확인합니다. 다운된 경우 백업 서버에 연결하는 코드를 작성합니다. "if" 및 "else" 루프를 사용하여 코드를 구성하는 것은 코드에 여러 개가 있는 경우 효과적이지 않습니다. 자바 예외 다루다.
class connect{
if(Server Up){
// code to connect to server
}
else{
// code to connect to BACKUP server
}
}
캐치 블록을 사용해 보세요
Java 내장된 예외적인 처리 기능을 제공합니다.
- 일반 코드는 TRY 블록.
- 예외 처리 코드는 CATCH 블록
우리의 예에서 TRY 블록은 서버에 연결하는 코드를 포함합니다. CATCH 블록은 백업 서버에 연결하는 코드를 포함합니다. 서버가 가동 중이면 CATCH 블록의 코드는 무시됩니다. 서버가 다운되면 예외가 발생하고 catch 블록의 코드가 실행됩니다.
따라서 예외가 처리되는 방식은 다음과 같습니다. Java.
try & catch 사용을 위한 구문
try{
statement(s)
}
catch (exceptiontype name){
statement(s)
}
예시
단계 1) 다음 코드를 편집기에 복사하세요.
class JavaException {
public static void main(String args[]){
int d = 0;
int n = 20;
int fraction = n/d;
System.out.println("End Of Main");
}
}
단계 2) 파일을 저장하고 코드를 컴파일합니다. java 명령을 사용하여 프로그램을 실행합니다. Java예외
단계 3) 산술 예외 – 5으로 나누는 것은 라인 # 6에 대해 아래와 같이 표시되며 라인 # XNUMX은 실행되지 않습니다.
단계 4) 이제 try and catch가 이 예외를 처리하는 데 어떻게 도움이 되는지 살펴보겠습니다. 코드 줄을 발생시키는 예외를 시도 블록 다음에 따라 블록. 다음 코드를 편집기에 복사하세요.
class JavaException {
public static void main(String args[]) {
int d = 0;
int n = 20;
try {
int fraction = n / d;
System.out.println("This line will not be Executed");
} catch (ArithmeticException e) {
System.out.println("In the catch Block due to Exception = " + e);
}
System.out.println("End Of Main");
}
}
단계 5) 코드를 저장, 컴파일 및 실행합니다. 다음과 같은 출력이 표시됩니다.
관찰한 대로 예외가 처리되고 코드의 마지막 줄도 실행됩니다. 또한 Line #7은 실행되지 않습니다. 예외가 발생하자마자 제어 흐름이 catch 블록으로 이동합니다.
참고 : AritmeticException 개체 "e"는 복구 작업을 수행하는 데 유용할 수 있는 발생한 예외에 대한 정보를 전달합니다.
Java 예외 클래스 계층
하나의 catch 문이 실행된 후 다른 문은 무시되고 try/catch 블록 이후에도 실행이 계속됩니다. 중첩된 catch 블록은 예외 계층 구조를 따릅니다.
- 모든 예외 클래스 Java 'Throwable' 클래스를 확장합니다. Throwable에는 Error와 Exception이라는 두 개의 하위 클래스가 있습니다.
- Error 클래스는 메모리 오류, 하드웨어 오류, JVM 오류 등 프로그램의 정상적인 상황에서 발생할 것으로 예상되지 않는 예외 또는 문제를 정의합니다.
- Exception 클래스는 프로그램에서 처리할 수 있는 예외를 나타내며, try 및 catch 블록을 사용하여 이 예외로부터 프로그램을 복구할 수 있습니다.
- 런타임 예외는 예외 클래스의 하위 클래스입니다. 이러한 유형의 예외는 런타임에 발생하고 컴파일 타임에 추적할 수 없는 예외를 나타냅니다. 동일한 예외의 훌륭한 예는 0으로 나누기 예외 또는 널 포인터 예외 등입니다.
- 입력 및 출력 작업 중에 IO 예외가 발생합니다.
- 중단된 예외 Java, 다중 스레딩 중에 생성됩니다.
예: try 및 catch 블록의 중첩을 이해하려면
단계 1) 다음 코드를 편집기에 복사하세요.
class JavaException {
public static void main(String args[]) {
try {
int d = 1;
int n = 20;
int fraction = n / d;
int g[] = {
1
};
g[20] = 100;
}
/*catch(Exception e){
System.out.println("In the catch block due to Exception = "+e);
}*/
catch (ArithmeticException e) {
System.out.println("In the catch block due to Exception = " + e);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("In the catch block due to Exception = " + e);
}
System.out.println("End Of Main");
}
}
단계 2) 파일을 저장하고 코드를 컴파일합니다. 명령을 사용하여 프로그램을 실행하고, 자바 Java예외.
단계 3) ArrayIndexOutOfBoundsException이 생성됩니다. int d 값을 0으로 변경합니다. 코드를 저장하고 컴파일하고 실행합니다.
4단계) ArithmeticException이 생성되어야 합니다.
단계 5) 10행부터 12행까지 주석 처리를 해제합니다. 코드를 저장하고, 컴파일하고, 실행하세요.
단계 6) 컴파일 오류? 이는 Exception이 ArithmeticException Exception의 기본 클래스이기 때문입니다. ArithmeticException에 의해 발생한 모든 예외는 Exception 클래스에서도 처리될 수 있습니다. 따라서 ArithmeticException의 catch 블록은 실행될 기회를 얻지 못하므로 중복됩니다. 따라서 컴파일 오류가 발생합니다.
Java 마지막으로 차단
마지막 블록은 예외 발생 여부와 관계없이 실행됨 try 블록에서. 그것은 optional try 블록과 함께 사용합니다.
try {
statement(s)
} catch (ExceptiontType name) {
statement(s)
} finally {
statement(s)
}
try 블록에서 예외가 발생한 경우에는 catch 블록이 실행된 후 finally 블록이 실행됩니다.
예시
단계 1) 다음 코드를 편집기에 복사하세요.
class JavaException {
public static void main(String args[]){
try{
int d = 0;
int n =20;
int fraction = n/d;
}
catch(ArithmeticException e){
System.out.println("In the catch block due to Exception = "+e);
}
finally{
System.out.println("Inside the finally block");
}
}
}
단계 2) Save, Compile & Run the Code.
단계 3) 예상 출력. 마지막으로 예외가 발생하더라도 블록이 실행됩니다.
단계 4) 변수 d = 1의 값을 변경합니다. 코드를 저장, 컴파일 및 실행하고 출력을 관찰합니다.양식 하단
제품 개요
- An 예외는 런타임 오류입니다. 이는 프로그램 실행의 정상적인 흐름을 방해합니다. 프로그램 실행 중 중단을 오류 또는 예외라고 합니다.
- 오류는 두 가지 범주로 분류됩니다.
- 컴파일 시간 오류 - 구문 오류, 의미 오류
- 런타임 오류 - 예외
- A 강력한 프로그램은 모든 예외를 처리해야 합니다. 정상적인 프로그램 실행 흐름을 계속 진행합니다. Java 내장된 예외 처리 방법 제공
- 예외 처리기는 다음과 같은 코드 집합입니다. 예외를 처리하다. 예외는 다음에서 처리될 수 있습니다. Java try & catch를 사용합니다.
- 차단해 보세요: 이 블록에는 일반 코드가 들어갑니다.
- 캐치 블록: 정상적인 코드에 오류가 있으면 이 블록으로 들어갑니다.







