java
자바의 예외 프로그램 명령의 실행을 중단하고 프로그램 실행의 정상적인 흐름을 방해하는 이벤트입니다. 메소드 내에서 발생한 오류 이벤트 정보를 래핑하여 런타임 시스템에 전달하는 객체입니다. Java에서 예외는 주로 다양한 유형의 오류 조건을 나타내는 데 사용됩니다.
이 튜토리얼에서는 배우게 될 것입니다-
두 가지 유형의 오류가 있습니다.
컴파일 시간 오류는 다시 두 가지 유형으로 분류할 수 있습니다.
구문 오류 예:
int a;
를 선언하는 대신 in a;
로 잘못 선언했습니다. 컴파일러에서 오류가 발생합니다.
예:int a;
변수를 선언했습니다. 몇 줄의 코드 후에 다시 정수를 int a;
으로 선언합니다. . 이러한 모든 오류는 코드를 컴파일할 때 강조 표시됩니다.
런타임 오류의 예
런타임 오류를 예외 라고 합니다. 오류. 프로그램 실행의 정상적인 흐름을 방해하는 모든 이벤트입니다.
예외의 예로는 산술 예외, Nullpointer 예외, 0으로 나누기 예외 등이 있습니다.
Java의 예외는 개발자가 제어할 수 없는 것입니다.
동영상에 액세스할 수 없는 경우 여기를 클릭하십시오.
서버에 액세스하는 프로그램을 코딩했다고 가정합니다. 코드를 개발하는 동안 문제가 해결되었습니다.
실제 프로덕션 실행 중에는 서버가 다운됩니다. 프로그램이 액세스하려고 하면 예외가 발생합니다.
지금까지 예외는 개발자의 통제 범위를 벗어났습니다. 그러나 환경 문제에 대한 코드 오류를 비난하는 것은 해결책이 아닙니다. 예외적인 상황을 처리하는 강력한 프로그래밍이 필요합니다. 이러한 코드를 예외 처리기라고 합니다.
이 예에서 좋은 예외 처리는 서버가 다운될 때 백업 서버에 연결하는 것입니다.
이를 구현하려면 코드를 입력하여 서버에 연결합니다(기존의 if 및 else 조건 사용).
서버가 다운되었는지 확인합니다. 그렇다면 백업 서버에 연결하는 코드를 작성하십시오.
"if" 및 "else" 루프를 사용하는 이러한 코드 구성은 코드에 처리할 Java 예외가 여러 개 있는 경우에는 효과적이지 않습니다.
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
Java는 내장된 예외 처리 기능을 제공합니다.
이 예에서 TRY 블록에는 서버에 연결하는 코드가 포함됩니다. CATCH 블록에는 백업 서버에 연결하는 코드가 포함됩니다.
서버가 가동 중인 경우 CATCH 블록의 코드는 무시됩니다. 서버가 다운된 경우 예외가 발생하고 catch 블록의 코드가 실행됩니다.
이것이 자바에서 예외를 처리하는 방법입니다.
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 JavaException
명령을 사용하여 프로그램을 실행하십시오.3단계) 산술 예외 – 0으로 나누기는 5행에 대해 아래와 같이 표시되고 6행은 실행되지 않습니다.
4단계) 이제 try와 catch가 이 예외를 처리하는 데 어떻게 도움이 되는지 살펴보겠습니다. 코드 줄을 일으키는 예외를 시도 에 넣습니다. 차단 후 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단계) 코드를 저장, 컴파일 및 실행합니다. 다음과 같은 결과를 얻을 수 있습니다.
관찰한 대로 예외가 처리되고 코드의 마지막 줄도 실행됩니다. 또한 예외가 발생하는 즉시 제어 흐름이 catch 블록으로 점프하기 때문에 Line #7이 실행되지 않습니다.
참고: AritmeticException 객체 "e"는 복구 조치를 취하는 데 유용할 수 있는 발생한 예외에 대한 정보를 전달합니다.
하나의 catch 문이 실행된 후 나머지는 무시되고 try/catch 블록 이후에 실행이 계속됩니다. 중첩된 catch 블록은 예외 계층 구조를 따릅니다.
예: 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 JavaException 명령을 사용하여 프로그램을 실행합니다. .
3단계) ArrayIndexOutOfBoundsException이 생성됩니다. int d의 값을 0으로 변경합니다. 코드를 저장, 컴파일 및 실행합니다.
4단계 ) ArithmeticException이 생성되어야 합니다.
5단계) 10행에서 12행까지의 주석을 제거합니다. 코드를 저장, 컴파일 및 실행합니다.
6단계) 컴파일 오류? Exception이 ArithmeticException Exception의 기본 클래스이기 때문입니다. ArithmeticException에 의해 발생한 모든 Exception은 Exception 클래스에서도 처리할 수 있습니다. 따라서 컴파일 오류입니다.
finally 블록은 예외가 발생하더라도 실행됩니다. 시도 블록에서. 선택사항입니다. 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단계) 코드를 저장, 컴파일 및 실행합니다.
3단계) 예상 출력. 마지막으로 예외가 발생하더라도 블록이 실행됩니다.
4단계) 변수 d =1의 값을 변경합니다. 코드를 저장, 컴파일 및 실행하고 output.Bottom of Form
을 관찰합니다.요약 :
java
예외(또는 예외적인 이벤트)는 프로그램 실행 중에 발생하는 문제입니다. 예외가 발생한 경우 발생하면 프로그램의 정상적인 흐름이 중단되고 프로그램/응용 프로그램이 비정상적으로 종료되므로 권장하지 않으므로 이러한 예외를 처리해야 합니다. 예외는 여러 가지 이유로 발생할 수 있습니다. 다음은 예외가 발생하는 몇 가지 시나리오입니다. 사용자가 잘못된 데이터를 입력했습니다. 열어야 할 파일을 찾을 수 없습니다. 통신 도중 네트워크 연결이 끊겼거나 JVM의 메모리가 부족합니다. 이러한 예외 중 일부는 사용자 오류로 인해
예외는 프로그램 실행 중에 발생하는 문제입니다. C++ 예외는 0으로 나누려는 시도와 같이 프로그램이 실행되는 동안 발생하는 예외적인 상황에 대한 응답입니다. 예외는 프로그램의 한 부분에서 다른 부분으로 제어를 전송하는 방법을 제공합니다. C++ 예외 처리는 try, catch,의 세 가지 키워드를 기반으로 합니다. 그리고 던지기 . 던지다 − 문제가 나타나면 프로그램에서 예외가 발생합니다. 이것은 throw를 사용하여 수행됩니다. 키워드. 잡다 − 프로그램은 문제를 처리하려는 프로그램의 위치에서 예외 처리기로 예외를