다음 기사에서는 finally in Java에 대한 개요를 제공합니다. 마지막으로 try 및 catch와 함께 사용되는 코드 블록입니다. 마지막으로 예외 발생 여부에 관계없이 실행되어야 하는 코드 블록을 포함합니다. finally 블록 내부에 작성된 명령문은 try 블록에서 오류가 발생했는지 여부에 관계없이 항상 실행됩니다. 마지막으로, 이 블록은 열린 파일로 인한 메모리 오류나 열린 연결 또는 최대 연결 오류로 인한 데이터베이스 오류가 발생하지 않도록 하는 파일 또는 데이터베이스 연결을 닫는 데 적합합니다. 또한 코드에서 발생하는 모든 오류가 정상적으로 처리되도록 보장합니다.
광고 이 카테고리에서 인기 있는 강좌 재무 모델링 및 가치 평가 - 전문 분야 | 51 코스 시리즈 | 모의고사 30개무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
구문:
try { //block of code that may cause an exception }
catch { //Handling the error occurred in try block }
finally { //code that should always execute }
여기서는 오류를 발생시키거나 오류를 발생시키고 최종적으로 실행을 차단하는 오류 코드를 작성합니다.
코드:
class ExampleFinally { public static void main(String args[]) { try{ int result = 1/0; System.out.println(result); catch(ArithmeticException e){ System.out.println("Divide by Zero Error"); } /* Finally block will always execute * even when we have created an error Block */ finally{ System.out.println("Gracefully Handling Error in Finally"); } System.out.println("Execution complete out of Try Catch Finally block"); } }
출력:
설명:
위 프로그램에서는 이미 숫자를 0에서 나눴습니다.
그리고 마지막으로 try catch를 수행한 후 인쇄된 모든 항목 외부에 코드 블록을 작성했습니다.
try-catch-finally 블록 내에서 예외가 발생하지 않는 또 다른 예를 살펴보고 무슨 일이 일어나는지 살펴보겠습니다.
코드:
class ExampleFinally { public static void main(String args[]) { try { int result = 100/10; System.out.println(result); System.out.println("try code block"); } catch (Exception e) { System.out.println("catch code block"); } finally { System.out.println("finally code block"); } } }
출력:
설명:
위 프로그램에서는 오류가 발생할 수 있는 코드를 작성하지 않았습니다. 코드는 try 블록 내에서 성공적으로 실행되었지만 여전히 finally 블록이 실행되고 내부에 메시지가 인쇄되는 것을 볼 수 있습니다.
읽거나 쓰기 위해 파일을 열려면 파일을 연 다음 스트림을 버퍼링해야 하며, 파일 처리, IO 또는 디스크 오류가 발생하지 않도록 열린 파일을 닫아야 합니다.
코드:
import java.io.*; public class ReadingFromFile { public static void main(String[] args)throws Exception { FileReader fr = null; try { fr = new FileReader("/Users/cdp/Documents/testing/python virtual/java/myfile.txt");<> System.out.println("Opening the file"); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) System.out.println(line); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fr != null) { try { System.out.println("Closing the file "); fr.close(); } catch (IOException e) { System.out.println("unrecoverable Error occurred"); e.printStackTrace(); } } System.out.println("Exiting Finally block"); } } }
출력(파일이 존재하지 않음):
출력(파일 있음):
위의 예에서는 파일을 열고 파일 경로에서 버퍼로 읽어들이려고 했습니다. 파일이 존재하고 파일을 읽을 수 있으면 오류가 발생하지 않으며 null이 아닌 경우 finally 블록에서 파일 버퍼가 닫힙니다. 파일을 읽는 데 오류가 발생하더라도 일부 권한으로 인해 최종적으로 차단하면 파일이 닫힙니다.
지금까지 우리는 언제, 어떻게 최종 블록이 실행되는지 살펴보았습니다.
그러나 최종적으로 블록이 실행되지 않는 특정 시나리오가 있을 수 있습니다.
Example:
import java.io.*; public class ReadingFromFile { public static void main(String[] args)throws Exception { FileReader fr = null; try { fr = new FileReader("/Users/cdp/Documents/testing/python virtual/java/myfile.txt"); System.out.println("Opening the file"); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) System.out.println(line); System.exit(0); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fr != null) { try { System.out.println("Closing the file "); fr.close(); } catch (IOException e) { System.out.println("unrecoverable Error occurred"); e.printStackTrace(); } } System.out.println("Exiting Finally block"); } } }
Output:
In the above example, we have used System.exit in the try block after reading the file, and it gets executed. If the System.exit gets executed without any exception, then there won’t be any control transfer to the finally block. However, in the case of an exception occuring before the System.exit, then finally block would surely get executed.
In the conclusion we can reach, it can finally play a very important role in gracefully exiting the program in case of errors. Finally, the block is important when you open a connection or buffered something, and it’s always important to close the connection or file opened. Finally, the block would even execute if there is an error or no error in the try block code. Finally, blocks are not mandatory but are useful in some situations.
위 내용은 마지막으로 자바에서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!