대충벌레 블로그
article thumbnail
728x90
반응형

 예외처리 

 

 

예외 처리

잘못된 코드, 부정확한 데이터, 예외적인 상황에 의하여 발생하는 오류

 

예외 처리 코드(try~catch)

try 블록에서 오류가 발생시 catch문으로 이동하여 처리한다.

try {
			//예외가 발생할수 있는 코드	
		} catch(예외종류 참조변수) {
			//예외처리 코드
		}finally {
			//여기 있는 코드는 try 블록이 끝나면 무조건 실행
		}

 

finally 블록

  • 오류가 발생하였건 발생하지 않았건 항상 실행된다.
  • 반드시 실행되어야하는 코드라면 finally 블록에 넣어준다.
  • [자원반납과 같은 처리가 필요한 경우 finally 블록을 사용]

예외 종류

  • Error : 자바 가상 기계 안에서 치명적인 오류가 발생한다.
  • RuntimeException : 프로그래밍 버그나 논리 오류에서 기인
  • Etc... : Error와 RuntimeException을 제외한 나머지 예외,                                                      회복할수 있는 예외이므로 프로그램은 반드시 처리

예외와 메소드

  • 예외를 잡아서 그 자리에서 처리하는 방법 : try ~ catch 블록을 사용하여 예외를 잡고 처리
  • 메소드가 예외를 발생시킨다고 기술하는 방법 : throws를 사용하여, 다른 메소드한테 예외 처리
public void write(){
	PrintWiter = new PrintWriter(new FileWriter("파일명")); // 에러 발생가능성이 있는 코드
		for(int i=0;i<SIZE;i++)
        	out.println("배열원소 " + i + " = " + list[i];
        out.close();
} 

아래코드처럼 throws 추가

public void write() throws IOException{

}

예외 생성

예외는 throw 문장으로 생성한다.

public Object pop() {
	Object obj;
    
    if(size==0){
    	throw new EmptyStackException(); // 이 문장에서 예외 객체가 생성된다.
    }
    
    return obj;
}

사용자 정의 예외

public class MyException extends Exception {
	//코드
}

Exception 클래스를 상속받아 처리할 사용자 정의 예외 클래스

public class Myexception extends Exception{
	public Myexception() {
		super("사용자 정의 예외");
	}
}

 class ExceptionTest1{
	public static void main(String args[]) {
		try {
			method1();
		}catch(Myexception e) {
			System.err.println(e.getMessage()+"\n 호출 스택 내용 : ");
			e.printStackTrace();
		}
	}
	
	private static void method1() throws Myexception{
		throw new Myexception();
	}
	
	
}

Exception 클래스를 상속받아서 예외 클래스를 생성하였다.

 

관련글

 
 

 

공감,구독 부탁드립니다.

 

반응형
profile

대충벌레 블로그

@대충벌레

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!