java
이 자습서에서는 예제를 통해 Java의 try catch 문에 대해 알아봅니다.
try...catch
자바의 블록은 예외를 처리하고 프로그램의 비정상 종료를 방지하는 데 사용됩니다.
다음은 try...catch
의 구문입니다. 자바에서 차단합니다.
try{
// code
}
catch(exception) {
// code
}
try
블록에는 예외를 생성할 수 있는 코드가 포함되어 있습니다.
catch
블록은 try
내부에 예외가 발생할 때 실행되는 코드를 포함합니다. 차단합니다.
class Main {
public static void main(String[] args) {
try {
int divideByZero = 5 / 0;
System.out.println("Rest of code in try block");
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException => " + e.getMessage());
}
}
}
출력
ArithmeticException => / by zero
위의 예에서 줄을 주목하십시오.
int divideByZero = 5 / 0;
여기서는 숫자를 0으로 나누려고 합니다. . 이 경우 예외가 발생합니다. 따라서 이 코드를 try
안에 넣었습니다. 차단합니다.
프로그램이 이 코드를 만나면 ArithmeticException
발생합니다. 그리고 예외는 catch
에 의해 잡힙니다. catch
내부의 코드를 차단하고 실행합니다. 차단합니다.
catch
블록은 try
내부에 예외가 있는 경우에만 실행됩니다. 차단합니다.
참고 :자바에서는 try
을 사용할 수 있습니다. catch
이 없는 블록 차단하다. 그러나 catch
는 사용할 수 없습니다. try
없는 블록 차단합니다.
try
도 사용할 수 있습니다. finally 블록과 함께 차단합니다.
이 경우 try 블록 내부에 예외가 있든 없든 finally 블록은 항상 실행됩니다.
class Main {
public static void main(String[] args) {
try {
int divideByZero = 5 / 0;
}
finally {
System.out.println("Finally block is always executed");
}
}
}
출력
Finally block is always executed Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:4)
위의 예에서는 try
을 사용했습니다. finally
와 함께 차단 차단하다. try
안의 코드가 차단으로 인해 예외가 발생합니다.
그러나 finally
내부의 코드는 블록은 예외와 상관없이 실행됩니다.
Java에서는 try...catch
뒤에 finally 블록을 사용할 수도 있습니다. 차단하다. 예를 들어,
import java.io.*;
class ListOfNumbers {
// create an integer array
private int[] list = {5, 6, 8, 9, 2};
// method to write data from array to a fila
public void writeList() {
PrintWriter out = null;
try {
System.out.println("Entering try statement");
// creating a new file OutputFile.txt
out = new PrintWriter(new FileWriter("OutputFile.txt"));
// writing values from list array to Output.txt
for (int i = 0; i < 7; i++) {
out.println("Value at: " + i + " = " + list[i]);
}
}
catch (Exception e) {
System.out.println("Exception => " + e.getMessage());
}
finally {
// checking if PrintWriter has been opened
if (out != null) {
System.out.println("Closing PrintWriter");
// close PrintWriter
out.close();
}
else {
System.out.println("PrintWriter not open");
}
}
}
}
class Main {
public static void main(String[] args) {
ListOfNumbers list = new ListOfNumbers();
list.writeList();
}
}
출력
Entering try statement Exception => Index 5 out of bounds for length 5 Closing PrintWriter
위의 예에서 list라는 배열을 만들었습니다. 및 output.txt라는 파일 . 여기서는 배열에서 데이터를 읽고 파일에 저장하려고 합니다.
코드를 확인하세요.
for (int i = 0; i < 7; i++) {
out.println("Value at: " + i + " = " + list[i]);
}
여기서 배열의 크기는 5
입니다. 배열의 마지막 요소는 list[4]
에 있습니다. . 그러나 a[5]
의 요소에 액세스하려고 합니다. 및 a[6]
.
따라서 코드는 catch 블록에 의해 catch되는 예외를 생성합니다.
finally
이후 블록은 항상 실행되므로 PrintWriter
을 닫는 코드가 포함되어 있습니다. finally 블록 내부.
파일 닫기 또는 연결과 같은 중요한 정리 코드를 포함하려면 finally 블록을 사용하는 것이 좋습니다.
참고 :finally
블록이 실행되지 않음:
System.exit()
사용 방법finally
에서 예외가 발생했습니다. 차단
각 try
에 대해 블록에는 0개 이상의 catch
이 있을 수 있습니다. 블록. 여러 catch
블록을 사용하면 각 예외를 다르게 처리할 수 있습니다.
각 catch
의 인수 유형 블록은 처리할 수 있는 예외 유형을 나타냅니다. 예를 들어,
class ListOfNumbers {
public int[] arr = new int[10];
public void writeList() {
try {
arr[10] = 11;
}
catch (NumberFormatException e1) {
System.out.println("NumberFormatException => " + e1.getMessage());
}
catch (IndexOutOfBoundsException e2) {
System.out.println("IndexOutOfBoundsException => " + e2.getMessage());
}
}
}
class Main {
public static void main(String[] args) {
ListOfNumbers list = new ListOfNumbers();
list.writeList();
}
}
출력
IndexOutOfBoundsException => Index 10 out of bounds for length 10
이 예에서는 arr
이라는 정수 배열을 만들었습니다. 10 크기 .
배열 인덱스가 0부터 시작하기 때문에 , 배열의 마지막 요소는 arr[9]
에 있습니다. . 진술을 주목하십시오.
arr[10] = 11;
여기에서 인덱스 10에 값을 할당하려고 합니다. . 따라서 IndexOutOfBoundException
발생합니다.
try
에서 예외가 발생한 경우 차단,
catch
에 예외가 발생합니다. 차단하다. 첫 번째 catch
블록이 IndexOutOfBoundsException
를 처리하지 않습니다. , 그래서 다음 catch
로 전달됩니다. 차단합니다.catch
위 예제의 블록은 IndexOutOfBoundsException
. 따라서 실행됩니다.
Java SE 7 이상에서는 이제 하나의 catch
로 두 가지 이상의 예외 유형을 잡을 수 있습니다. 차단합니다.
이는 코드 중복을 줄이고 코드 단순성과 효율성을 높입니다.
catch
에서 처리할 수 있는 각 예외 유형 블록은 세로 막대 |
를 사용하여 구분됩니다. .
구문은 다음과 같습니다.
try {
// code
} catch (ExceptionType1 | Exceptiontype2 ex) {
// catch block
}
자세한 내용은 Java catch multiple exceptions을 참조하십시오.
<시간>자원으로 시도 문은 하나 이상의 리소스 선언이 있는 try 문입니다.
구문은 다음과 같습니다.
try (resource declaration) {
// use of the resource
} catch (ExceptionType e1) {
// catch block
}
리소스는 프로그램이 끝날 때 닫을 개체입니다. try 문에서 선언하고 초기화해야 합니다.
예를 들어보겠습니다.
try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) {
// use of the resource
}
자원으로 시도 명령문은 자동 리소스 관리라고도 합니다. . 이 명령문은 명령문 끝에 있는 모든 리소스를 자동으로 닫습니다.
자세히 알아보려면 java try-with-resources 문을 방문하세요.
java
자바 대기열 인터페이스 이 자습서에서는 Java Queue 인터페이스와 해당 메서드에 대해 알아봅니다. Queue Java 컬렉션 프레임워크의 인터페이스는 큐 데이터 구조의 기능을 제공합니다. Collection 확장 인터페이스. 대기열을 구현하는 클래스 Queue 이후 인터페이스이므로 직접 구현할 수 없습니다. Queue의 기능을 사용하려면 , 이를 구현하는 클래스를 사용해야 합니다. 배열 데크 링크드리스트 우선순위 대기열 Queue를 확장하는 인터페이스 Queue 인터페이스는 다양한 하위 인터페이스로 확장됩니
자바에서 예외란 무엇입니까? 자바의 예외 프로그램 명령의 실행을 중단하고 프로그램 실행의 정상적인 흐름을 방해하는 이벤트입니다. 메소드 내에서 발생한 오류 이벤트 정보를 래핑하여 런타임 시스템에 전달하는 객체입니다. Java에서 예외는 주로 다양한 유형의 오류 조건을 나타내는 데 사용됩니다. 이 튜토리얼에서는 배우게 될 것입니다- 예외란 무엇입니까? 예외가 필요한 이유는 무엇입니까? 예외 처리 방법 캐치 블록 시도 Java 예외 클래스 계층 구조 자바 최종 차단 두 가지 유형의 오류가 있습니다. 컴파일 시간 오류 런타임