자기개발/Java

Chapter 8 예외처리(Exception Handling)

실버블렛 2012. 1. 21. 15:47
반응형



----------------------------------------------------------------------------------------
class ExceptionEx1
{
 public static void main(String[] args)
 {
  try {
   try{ } catch (Exception e){}
  } catch (Exception e){
   //try{} catch(Exception e){} //컴파일 에러 - catch문 내에 동일한 참조변수 e중복사용 충돌.
  } //end of try-catch

  try {
  }catch (Exception e){}  
 } // end of try-catch
}

----------------------------------------------------------------------------------------
class ExceptionEx2
{
 public static void main(String[] args)
 {
  int number = 100;
  int result = 0;
  
  //try {
   for (int i=0; i<10; i++){
    result = number / (int)(Math.random()*10);
    System.out.println(result);
   }   
  //}catch (Exception e){  }
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx3
{
 public static void main(String[] args)
 {
  int number = 100;
  int result = 0;
  
  
   for (int i=0; i<10; i++){
    try {
    result = number / (int)(Math.random()*10);
    System.out.println(result);   
  }catch (ArithmeticException e){
   System.out.println("0");
  } //end of try-catch
   } //end of for
 } //end of main
}

----------------------------------------------------------------------------------------
class ExceptionEx4
{
 public static void main(String[] args)
 {
  System.out.println(1);
  System.out.println(2);

  try {
   System.out.println(3);
   System.out.println(4);
  }catch (Exception e){
   System.out.println(5);
  }
  System.out.println(6);
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx5
{
 public static void main(String[] args)
 {
  System.out.println(1);
  System.out.println(2);

  try {
   System.out.println(3);
   System.out.println(0/0);
   System.out.println(4); //실행되지 않는다.
  }catch (Exception e){
   System.out.println(5);
  }
  System.out.println(6);
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx6
{
 public static void main(String[] args)
 {
  try {
   Exception e = new Exception("고의로 발생시켰음.");
   throw e;
   //throw new Exception("고의로 발생시켰음.");
  }catch (Exception e){
   System.out.println("에러 메시지 : " + e.getMessage());
   e.printStackTrace();
  }
  System.out.println("프로그램이 정상적으로 종료되었습니다.");
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx7
{
 public static void main(String[] args)
 {
  throw new Exception();
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx8
{
 public static void main(String[] args)
 {
  try {
   throw new Exception();   
  }catch (Exception e){
   System.out.println("Exception이 발생했습니다.");
  }  
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx9
{
 public static void main(String[] args)
 {
  throw new RuntimeException();
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx10
{
 public static void main(String[] args)
 {
  System.out.println(1);
  System.out.println(2);
  try {
   System.out.println(3);
   System.out.println(0/0);
   System.out.println(4);   
  }catch (Exception e){
   System.out.println(5);
  }
  System.out.println(6);
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx11
{
 public static void main(String[] args)
 {
  System.out.println(1);
  System.out.println(2);
  try {
   System.out.println(3);
   System.out.println(0/0);
   System.out.println(4);   
  }catch (ArithmeticException ae){
   if (ae instanceof ArithmeticException){
    System.out.println("true");
    System.out.println("ArithmeticException");    
   }
  }catch (Exception e){
   System.out.println("Exception");
  }
   System.out.println(6);
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx12
{
 public static void main(String[] args)
 {
  System.out.println(1);
  System.out.println(2);
  try {
   System.out.println(3);
   System.out.println(0/0);
   System.out.println(4);   
  }catch (ArithmeticException ae){
   ae.printStackTrace();
   System.out.println("에러메시지 : " + ae.getMessage());   
  }catch (Exception e){
   System.out.println("Exception");
  }
   System.out.println(6);
 }
}

----------------------------------------------------------------------------------------
import java.io.*;

class ExceptionEx13
{
 public static void main(String[] args)
 {
  PrintStream ps = null;
  try {
   ps = new PrintStream("error.log");
   System.out.println(1);
      System.out.println(2); 
   System.out.println(3);
   System.out.println(0/0);
   System.out.println(4);   
  }catch (Exception ae){
   ae.printStackTrace(ps);
   ps.println("예외메시지 : " + ae.getMessage());   
  }
   System.out.println(6);
 }
}

----------------------------------------------------------------------------------------
import java.io.*;
import java.util.*;

class ExceptionEx14
{
 public static void main(String[] args)
 {
  FileOutputStream fos = null;
  PrintStream ps = null;

  try {
   fos = new FileOutputStream("error.log", true);
   ps = new PrintStream(fos);
   System.setErr(ps);

   System.out.println(1);
      System.out.println(2); 
   System.out.println(3);
   System.out.println(0/0);
   System.out.println(4);   
  }catch (Exception ae){
   System.err.println("------------------------------------");
   System.err.println("예외발생시간" + new Date());
   ae.printStackTrace(System.err);
   System.err.println("예외메시지 : " + ae.getMessage());
   System.err.println("------------------------------------");   
  }
   System.out.println(6);
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx18
{
 public static void main(String[] args) throws Exception
 {
  method1();
 }

 static void method1()throws Exception {
  method2();
 }

 static void method2() throws Exception {
  throw new Exception();
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx19
{
 public static void main(String[] args)
 {
  method1();
 }

 static void method1(){
  try{
   throw new Exception();      
  }catch (Exception e){
   System.out.println("main메서드에서 예외가 처리되었습니다.");
   e.printStackTrace();
  }
 }
}

----------------------------------------------------------------------------------------
class ExceptionEx20
{
 public static void main(String[] args)
 {
  try{
   method1();         
  }catch (Exception e){
   System.out.println("main메서드에서 예외가 처리되었습니다.");
   e.printStackTrace();
  }
 }

 static void method1() throws Exception {
  throw new Exception();  
 }
}

----------------------------------------------------------------------------------------
import java.io.*;

class ExceptionEx21
{
 public static void main(String[] args)
 {
  File f = createFile(args[0]);
  System.out.println(f.getName() + "파일이 성공적으로 생성되었습니다.");
 } //end of main

 static File createFile(String fileName){
  try{
   if (fileName == null || fileName.equals("")){
    throw new Exception("파일이름이 유효하지 않습니다.");
      }   
  }catch (Exception e){
   fileName = "제목없음.txt";
  }finally {
   File f = new File(fileName);
   createNewFile(f);
   return f;
  }
  
 } //end of createFile

 static void createNewFile(File f){
  try{
   f.createNewFile();
  }catch (Exception e){ }
 } //end of 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() + " 다시 입력해 주시기 바랍니다.");
  }
  
 } //end of main

 static File createFile(String fileName) throws Exception{
   if (fileName == null || fileName.equals("")){
    throw new Exception("파일이름이 유효하지 않습니다.");
      }   
   File f = new File(fileName);
   f.createNewFile();
   return f;
 } //end of createFile
}

----------------------------------------------------------------------------------------
class ExceptionEx23
{
 public static void main(String[] args)
 {
  try{
   method1();   
  }catch (Exception e){
   System.out.println("main메서드에서 예외가 처리되었습니다.");
  }  
 }

 static void method1()throws Exception{
  try{
   throw new Exception();   
  }catch (Exception e){
   System.out.println("method1메서드에서 예외가 처리되었습니다.");
   throw e;
  }
 }
}

----------------------------------------------------------------------------------------
class FinallyTest
{
 public static void main(String[] args)
 {
  try{
   startInstall(); // 프로그램 설치 준비를 한다.
   fileCopy(); // 파일을 복사한다.
   deleteTempFiles(); //설치에 사용된 임시파일을 삭제한다.
  }catch (Exception e){
   e.printStackTrace();
   deleteTempFiles();
  }
 }

 static void startInstall(){/*프로그램 설치 준비 코드*/}
 static void fileCopy(){/*파일복사코드*/}
 static void deleteTempFiles(){/*임시파일 삭제 코드*/}
}

----------------------------------------------------------------------------------------
class FinallyTest2
{
 public static void main(String[] args)
 {
  try{
   startInstall(); // 프로그램 설치 준비를 한다.
   fileCopy(); // 파일을 복사한다.
    //설치에 사용된 임시파일을 삭제한다.
  }catch (Exception e){
   e.printStackTrace();
   
  }finally {
   deleteTempFiles();
  }
 }

 static void startInstall(){/*프로그램 설치 준비 코드*/}
 static void fileCopy(){/*파일복사코드*/}
 static void deleteTempFiles(){/*임시파일 삭제 코드*/}
}

----------------------------------------------------------------------------------------
class  FinallyTest3
{
 public static void main(String[] args)
 {
  FinallyTest3.method1();
  System.out.println("method1()의 수행을 마치고 main메서드로 돌아왔습니다.");
 }

 static void method1(){
  try{
   System.out.println("method1()이 호출되었습니다.");
   return;   
  }catch (Exception e){
   e.printStackTrace();
  }finally {
   System.out.println("method1() 의 finally블럭이 실행되었습니다.");
  }
 }
}

----------------------------------------------------------------------------------------
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();
   System.out.println("다시 설치를 시작하세요.");
  }finally{
   deleteFiles();
  }  
 } //end of main

 static void startInstall() throws SpaceException, MemoryException{
  if (!enoughSpace()){
   throw new SpaceException("설치할 공간이 부족합니다.");
  }

  if (!enoughMemory()){
   throw new MemoryException("메모리가 부족합니다.");
  }

  /*설치준비에 필요한 코드*/
 }

 static void copyFiles(){
  /*파일복사를 위한 코드*/
 }

 static void deleteFiles(){
  /*설치를 위한 임시 파일 삭제 코드*/
 }

 static boolean enoughSpace(){
  //
  return true;
 }

 static boolean enoughMemory(){
  //
  return false;
 }

} //end of main

class SpaceException extends Exception{
 SpaceException(String msg){
 super(msg);
 }
}

class MemoryException extends Exception{
 MemoryException(String msg){
 super(msg);
 }
}
----------------------------------------------------------------------------------------

반응형

'자기개발 > Java' 카테고리의 다른 글

자바 강의  (0) 2012.01.22
Chapter 9 java.lang 패키지  (0) 2012.01.21
Chapter 7 객체지향 프로그래밍 2  (0) 2012.01.21
Chapter 6 객체지향 프로그래밍 1  (0) 2012.01.21
Chapter 5 배열(Array)  (0) 2012.01.21