JAVA (360) 썸네일형 리스트형 예외처리: chained exception 예외와 예외를 연결하다 연결된 예외 한 예외가 다른 예외를 발생시킬 수 있고 이를 원인예외라 한다. 이와 같은 구조는 여러가지 예외를 하나의 큰 분류의 예외로 묶어서 다룰수 있다 public class ChainedExceptionExample { public static void main(String[] args) { try { // 메서드 호출 processFile("nonexistent-file.txt"); } catch (Exception e) { // 예외 정보 출력 System.err.println("최상위 예외 메시지: " + e.getMessage()); // 연결된 예외 정보 출력 System.err.println("원인 예외 메시지: " + e.getCause().getMessage()); // 전체 스택 트.. 예외처리: exception re-throwing 예외 되던지기 한 메서드에서 발생할 수 있는 예외가 여럿인 경우 몇개는 try-catch문으로 메서드내에서 자체적으로 처리하고 나머지는 선언부에 지정하여 처리함으로써 양쪽으로 나눠 처리될 수 있게 할 수 있다. 외에 하나의 예외에서도 예외가 발생한 메서드와 호출한 메서드 양쪽에서도 처리할수 있다. 이 방법은 하나의 예외에 대해서 예외가 발생한 메서드와 이를 호출한 메서드 모두에서 처리해줘야할 작업이 생길때 유용하다. 간단히 이해해보자면 2중 for문이 가능하듯 예외처리도 중첩되어 사용이 가능하여 호출한 부모쪽에게도 예외가 발생했음을 알릴 수 있다는 것이다. 코드를 보며 이해해보자. public class RethrowExample { public static void main(String[] args) { try { .. 예외처리: extends Exception 사용자정의 예외 만들기 기존 정의된 예외 클래스 외에 필요에 따라 프로그래머가 새로운 예외클래스를 정의할 수 있다. // 사용자 정의 예외 클래스 class CustomException extends Exception { public CustomException() { super(); } public CustomException(String message) { super(message); } } public class CustomExceptionExample { public static void main(String[] args) { try { // 사용자 정의 예외를 발생시키는 메서드 호출 throwCustomException(); } catch (CustomException e) { System.err.println("사용.. 예외처리: try-catch-resources문, 사용한뒤 자동으로 닫아준다. 주로 입출력에 사용되는 클래스 중에서 사용한 후에 꼭 닫아줘야 하는것들이 있다. 그래야 자원이 반환되기때문인데 이럴때마다 sample.close()코드를 작성하는것은 당연하거니와 자칫 까먹을 수도있고 번거롭다. try-catch-resource문은 이를 자동으로 처리해준다. import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class TryWithResourcesExample { public static void main(String[] args) { // try-with-resources 구문 사용 try (BufferedReader reader = new BufferedReader(ne.. throws Exception 메서드에 예외선언하기, try-catch문의 다른 표현방법 기존의 언어들에서 메서드에 예외선언을 하지않아 경험이 많지않고서야 어떤상황에 어떤 종류의 예외가 발생할 가능성이 있는지 충분히 예측하기가 어려웠다. 이때 메서드를 작성할때 메서드내에 발생가능성 예외를 선언부에 명시해 프로그래머들의 짐을 덜어줄 수 있다. import java.io.FileNotFoundException; public class MethodWithException { public static void main(String[] args) { try { // 예외를 던질 수 있는 메서드 호출 processFile("nonexistent-file.txt"); } catch (FileNotFoundException e) { System.err.println("파일을 찾을 수 없습니다."); e.p.. 예외발생시키기 throw e 키워드 throw를 통해 프로그래머가 고의로 예외를 발생시킬 수 있다. public class RethrowExample { public static void main(String[] args) { try { // 예외를 발생시키는 메서드 호출 processFile("nonexistent-file.txt"); } catch (FileNotFoundException e) { System.err.println("파일을 찾을 수 없습니다."); // 예외를 다시 던짐 throw e; } } // 파일을 처리하는 메서드 public static void processFile(String fileName) throws FileNotFoundException { // 파일을 열고 처리하는 로직 // 여기에서는 파일.. 예외처리: try-catch문, try catch finally 예외를 처리하는 코드 public class TryCatchExample { public static void main(String[] args) { try { // 예외가 발생할 수 있는 코드 int result = divide(10, 0); System.out.println("결과: " + result); } catch (ArithmeticException e) { // 예외가 발생했을 때 처리할 코드 System.err.println("예외가 발생했습니다: " + e.getMessage()); } finally { // 예외 발생 여부와 상관없이 항상 실행되는 코드 System.out.println("finally 블록이 실행되었습니다."); } System.out.println("프로그램이 정상적.. 예외정보출력 printStachTrace() getMessage() printStachTrace() 예외당시의 메서드 정보와 예외메세지 출력 getMessage() 발생한 예외클래스의 인스턴스에 저장된 메세지 출력 public class ExceptionExample { public static void main(String[] args) { try { // 예외를 발생시키는 메서드 호출 divide(10, 0); } catch (ArithmeticException e) { // 예외 메시지 출력 System.err.println("예외 메시지: " + e.getMessage()); // 예외 스택 트레이스 출력 System.err.println("예외 스택 트레이스:"); e.printStackTrace(); } } // 두 수를 나누는 메서드 public static.. 이전 1 ··· 16 17 18 19 20 21 22 ··· 45 다음