자바/Java Exception 사용하기
TestException.java
package arabiannight.tistory.com.exception; public class TestException { public static void main(String[] args) { try { method1(); } catch (ArithmeticException e) { System.out.println("ArithmeticException"); } catch (Exception e) { System.out.println("Exception"); } method2(); method3(); method4(); } // 예외 던지기 : throw 로 예외를 던질때는 메서드에 // throws Exception(던질 예외들) 선언해줘야 함. // 현재 메서드를 실행할 경우 Exception, ArithmeticException 발생 할 수 // 있다고 선언해준 형태 입니다. public static void method1() throws Exception , ArithmeticException { try { System.out.println(1); System.out.println(0/0); // 앞에서 Exception이 날경우 다음 문장은 실행 안하고 catch문으로 넘어감. System.out.println(2); } catch (Exception e) { System.out.println(3); // method1을 호출한 메서드에게 예외를 되돌려 준다. throw e; // catch 문 실행 여부와 상광없이 무조건 finally 호출 } finally { System.out.println("finally"); } } // return 일 경우도 finally 호출 public static void method2() { try { System.out.println(1); return; } catch (Exception e) { System.out.println(2); } finally { System.out.println("finally"); } } // String 문자열을 담는 Exception 생성 public static void method3() { try { throw new Exception("직접만든 Exception"); } catch (Exception e) { System.out.println(e.getMessage()); } } // Exception을 상속받은 MyException Class 만들어 사용 하기 public static void method4() { MyException myEx = new MyException("extends Exception!!"); try { throw myEx; } catch (Exception e) { System.out.println(e.getMessage()); System.out.println(((MyException) e).getErrCode()); System.out.println(myEx.getMessage()); System.out.println(myEx.getErrCode()); } } // Exception 상속 받은 MyException Class static class MyException extends Exception { private int Err_Code; public MyException(String msg, int errCode) { super(msg); this.Err_Code = errCode; } public MyException(String msg){ this(msg, 100); } public int getErrCode(){ return Err_Code; } } }
결과화면
// method1 1 3 finally ArithmeticException // method2 1 finally // method3 직접만든 Exception // method4 extends Exception!! 100 extends Exception!! 100
import java.io.*; class ExceptionEx21 { public static void main(String[] args) { // command line에서 입력받은 값을 이름으로 갖는 파일을 생성한다. File f = createFile(args[0]); System.out.println( f.getName() + " 파일이 성공적으로 생성되었습니다."); } // main메서드의 끝 static File createFile(String fileName) { try { if (fileName==null || fileName.equals("")) throw new Exception("파일이름이 유효하지 않습니다."); } catch (Exception e) { // fileName이 부적절한 경우, 파일 이름을 '제목없음.txt'로 한다. fileName = "제목없음.txt"; } finally { File f = new File(fileName); // File클래스의 객체를 만든다. createNewFile(f); // 생성된 객체를 이용해서 파일을 생성한다. return f; } } // createFile메서드의 끝 static void createNewFile(File f) { try { f.createNewFile(); // 파일을 생성한다. } catch(Exception e){ } } // createNewFile메서드의 끝 } // 클래스의 끝
import java.io.*; class ExceptionEx22 { public static void main(String[] args) { try { File f = createFile(args[0]); System.out.println( f.getName()+"파일이 성공적으로 생성되었습니다."); } catch (Exception e) { System.out.println(e.getMessage()+" 다시 입력해 주시기 바랍니다."); } } // main메서드의 끝 static File createFile(String fileName) throws Exception { if (fileName==null || fileName.equals("")) throw new Exception("파일이름이 유효하지 않습니다."); File f = new File(fileName); // File클래스의 객체를 만든다. // File객체의 createNewFile메서드를 이용해서 실제 파일을 생성한다. f.createNewFile(); return f; // 생성된 객체의 참조를 반환한다. } // createFile메서드의 끝 } // 클래스의 끝
class NewExceptionTest { public static void main(String args[]) { try { startInstall(); // 프로그램 설치에 필요한 준비를 한다. copyFiles(); // 파일들을 복사한다. } catch (SpaceException e) { System.out.println("에러 메시지 : " + e.getMessage()); e.printStackTrace(); System.out.println("공간을 확보한 후에 다시 설치하시기 바랍니다."); } catch (MemoryException me) { System.out.println("에러 메시지 : " + me.getMessage()); me.printStackTrace(); System.gc(); // Garbage Collection을 수행하여 메모리를 늘려준다. System.out.println("다시 설치를 시도하세요."); } finally { deleteTempFiles(); // 프로그램 설치에 사용된 임시파일들을 삭제한다. } // try의 끝 } // main의 끝 static void startInstall() throws SpaceException, MemoryException { if(!enoughSpace()) // 충분한 설치 공간이 없으면... throw new SpaceException("설치할 공간이 부족합니다."); if (!enoughMemory()) // 충분한 메모리가 없으면... throw new MemoryException("메모리가 부족합니다."); } // startInstall메서드의 끝 static void copyFiles() { } // 파일들을 복사하는 코드를 적는다. static void deleteTempFiles() { } // 임시파일들을 삭제하는 코드를 적는다. static boolean enoughSpace() { // 설치하는데 필요한 공간이 있는지 확인하는 코드를 적는다. return false; } static boolean enoughMemory() { // 설치하는데 필요한 메모리공간이 있는지 확인하는 코드를 적는다. return true; } } // ExceptionTest클래스의 끝 class SpaceException extends Exception { SpaceException(String msg) { super(msg); } } class MemoryException extends Exception { MemoryException(String msg) { super(msg); } } //
파일첨부 :
출처 : 자바의정석 ( 책꼭사서 보세요 정말 좋습니다.! )
'JAVA > 일반' 카테고리의 다른 글
자바/Java Math.random() 함수 사용법 ~! (0) | 2013.01.20 |
---|---|
자바/Java StringBuffer 사용 하기 (0) | 2012.04.06 |
자바/Java int[] 배열에서 최대값 찾기 (4) | 2012.03.06 |
자바/Java String클래스 생성자와 메서드 정리 (2) | 2012.03.01 |
자바/Java 기본 배열 및 이중 배열 예제 (0) | 2012.01.30 |