프로그래밍/- java

오류, 예외처리

즐겁게 하하하 2022. 2. 3. 08:40
728x90

 

★ 오류의 종류 
   => 컴파일 에러 :: 컴파일 할때 발생하는 에러 
      ex) system.out.println(); //System.~
   => 런타임 에러 :: 실행 할 때 발생하는 에러
      - 에러 : 수습될 수없는 심각한 오류
      - 예외 : 수습 가능한 오류 :: 비정상 종료를 막고, 정상적인 상태 유지 
        Exception( 외적인 요인 ) :: try{}catch{} 필수
        RuntimeException( 프로그래머 실수로 발생하는 예외 ) :: try{}catch{} 선택
          - ArithmeticException  
          - ClassCastException 형변환 에러
          - NullPointerException 참조변수 null
          - indexOutOfBoundsException 배열범위 벗어난것

    try { 
       // 1. 예외 발생시 예외 객체 발생
       // 2. 예외를 일부러 발생 시키는방법
       Exception e = new Exception("고의로 발생시킴");
       throw e; //  throw new Exception(); 도 가능

    } catch( ArithmeticException ae ){
       ae.printStackTrace();
       System.out.println( ae.getMessage() ); // 스택에 있는 내용을 알려줌 :: 5번줄 오류.
    }catch( Exception e ){
       System.out.println( e.getMessage() ); // 예외 메시지 알려줌
    } finally {
       // 예외의 발생여부에 관계없이 항상 수행되어야 하는 문장
       // try 블럭 안에 return 문장이 있어서 try 벗어날때도 finally 블럭 실행
    }

    //메서드에 예외 처리
    static void startInstall() trhow SpaceException , MemoryException {}
 
 

throw => try{ } catch {}
예외처리 class 정의
★ 연결된 예외
   => 예외 A 가 예외 B 를 발생시키면 A는 B의 원인예외 
   Throwable initCase( Thorwable cause ) :: 지정한 예외를 원인 예외로 등록
   Throwable getCause()  :: 원인 예외를 반환
   
   => 여러 예외 catch{}블럭을 하나로 묶어서 다루기 위해 사용합니다.
	try { 
	   install();
	} catch( InstallException e ){
	   e.printStackTrace();
	} 

	void install() throw InstallException{
	  try{
		startInstall();
		copyFiles();
	  } catch( SpaceException e ){
		 InstallException ie = new InstallException(" 설치중 예외발생 ");
		 ie.initCause(e); //InstallException의 원인예외를 SpaceException 으로 지정
		 throw ie; // installException 발생시킨다.
	} catch( MemoryException me ){  

	} 

   => Exception 필수 예외를 RuntimeException 선택 예외로 변경하려 할때 사용합니다. 
    // throw SpaceException , MemoryException => MemoryException을 선택예외로 변경
    static void startInstall() throw SpaceException { 
      if( !enoughSpace())
        throw new SpaceException("설치할 공간이 부족");
      if( !enoughMempry() ){
        throw new RuntimeException( new MemoryException("메모리 부족") );
    }
 

 

 

728x90