문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
프로그램:java:ㄴhomework:book_source:ch11 [2022/01/05 00:13] clayeryan@gmail.com [Chapter11 예외처리] |
프로그램:java:ㄴhomework:book_source:ch11 [2025/06/27 16:07] (현재) |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== Ch.11 예외처리 ====== | ====== Ch.11 예외처리 ====== | ||
| - | ==== 11.3 예외처리 ==== | + | =====예외처리===== |
| **try ~catch문의 구조** | **try ~catch문의 구조** | ||
| 줄 132: | 줄 132: | ||
| </ | </ | ||
| - | ==== 11.4 예외 강제 발생 ==== | + | ===== 예외 강제 발생 |
| ^<color # | ^<color # | ||
| 줄 156: | 줄 156: | ||
| </ | </ | ||
| - | ==== 11.5 예외 떠넘기기 ==== | + | =====예외 떠넘기기===== |
| + | |||
| + | **메서드에서 예외 선언** | ||
| + | void 메서드명() throws Exception1, Exception2... { | ||
| + | ... | ||
| + | } | ||
| <code java> | <code java> | ||
| + | package chapter11; | ||
| + | |||
| + | public class ExceptionEx6 { | ||
| + | |||
| + | public static void main(String[] args) { | ||
| + | try { | ||
| + | first(); | ||
| + | } catch (Exception e) { | ||
| + | System.out.println(e.getMessage()); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | static void first() throws Exception { | ||
| + | second(); | ||
| + | } | ||
| + | |||
| + | static void second() throws Exception { | ||
| + | throw new Exception(" | ||
| + | } | ||
| + | |||
| + | } | ||
| </ | </ | ||
| 줄 165: | 줄 191: | ||
| <code java> | <code java> | ||
| + | package chapter11; | ||
| + | |||
| + | public class ExceptionEx7 { | ||
| + | |||
| + | public static void main(String[] args) throws Exception { | ||
| + | try { | ||
| + | first(); | ||
| + | } catch (Exception e) { | ||
| + | System.out.println(" | ||
| + | System.out.println(e.getMessage()); | ||
| + | throw e; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | static void first() throws Exception { | ||
| + | try { | ||
| + | second(); | ||
| + | } catch (Exception e) { | ||
| + | System.out.println(" | ||
| + | throw e; // 예외 재발생 | ||
| + | } | ||
| + | } | ||
| + | |||
| + | static void second() throws Exception { | ||
| + | try { | ||
| + | throw new Exception(" | ||
| + | } catch (Exception e) { | ||
| + | System.out.println(" | ||
| + | throw e; // 예외 재발생 | ||
| + | } | ||
| + | } | ||
| + | |||
| + | } | ||
| </ | </ | ||
| - | ==== 11.6 사용자 정의 예외 클래스 ==== | ||
| + | <code java> | ||
| + | public static void main(String[] args) throws Exception { | ||
| + | try { | ||
| + | first(); | ||
| + | } | ||
| + | catch (Exception e) { | ||
| + | System.out.println(" | ||
| + | System.out.println(e.getMessage()); | ||
| + | throw e; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== 사용자 정의 예외 클래스 ===== | ||
| + | |||
| + | class 클래스명 extends Exception { | ||
| + | | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | |||
| + | **LoginException.java** | ||
| + | |||
| + | <code java> | ||
| + | package chapter11; | ||
| + | |||
| + | public class LoginException extends Exception { | ||
| + | |||
| + | LoginException(String msg) { | ||
| + | super(msg); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | **ExceptionEx8.java** | ||
| + | |||
| + | <code java> | ||
| + | package chapter11; | ||
| + | |||
| + | import java.util.Scanner; | ||
| + | |||
| + | public class ExceptionEx8 { | ||
| + | |||
| + | static String user_id = " | ||
| + | static String user_pw = " | ||
| + | |||
| + | public static void main(String[] args) throws Exception { | ||
| + | |||
| + | try { | ||
| + | Scanner scan = new Scanner(System.in); | ||
| + | System.out.print(" | ||
| + | String input_id = scan.nextLine(); | ||
| + | |||
| + | System.out.print(" | ||
| + | String input_pw = scan.nextLine(); | ||
| + | |||
| + | if (!user_id.equals(input_id)) { | ||
| + | throw new LoginException(" | ||
| + | } else if (!user_pw.equals(input_pw)) { | ||
| + | throw new LoginException(" | ||
| + | } else { | ||
| + | System.out.println(" | ||
| + | } | ||
| + | } catch (Exception e) { | ||
| + | System.out.println(e.getMessage()); | ||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| + | : | ||
| + | |||
| + | **기존 try~catch 방식** | ||
| + | |||
| + | FileInputStream is = null; | ||
| + | BufferedInputStream bis = null; | ||
| + | try { | ||
| + | is = new fileInputStream(" | ||
| + | bis = new BufferdInputStream(is); | ||
| + | int data = -1; | ||
| + | while((data = bis.read()) !=-1){ | ||
| + | System.out.print((char)data); | ||
| + | } | ||
| + | } finally { | ||
| + | // close 메서드 호출 | ||
| + | if ((is != null) is.close(); | ||
| + | if (bis != null) bis.close(); | ||
| + | } | ||
| + | |||
| + | |||
| + | **try-with-resource 방식** | ||
| + | |||
| + | try( | ||
| + | FileInputStream is = new FileInputStream(" | ||
| + | BufferedInputStream bis = new BufferdInputStream(is) | ||
| + | ) { | ||
| + | int data = -1; | ||
| + | while ((data = bis.read()) != -1) { | ||
| + | System.out.print((char) data); | ||
| + | } | ||
| + | } catch (IOException e) { | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | |||
별도로 명시하지 않을 경우, 이 위키의 내용은 다음 라이선스에 따라 사용할 수 있습니다: CC Attribution-Share Alike 4.0 International