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 클래스를 상속받아서 예외 클래스를 생성하였다.
관련글
1.2019/10/22 - [IT/Java] - Java 공부 정리 [1]
2.2019/10/23 - [IT/Java] - Java 공부 정리 [2] - 상속
3.2019/10/24 - [IT/Java] - Java 공부 정리 [3] - 상속(2)
공감,구독 부탁드립니다.
반응형
'IT 기술 > 자바[Java]' 카테고리의 다른 글
Java 공부 정리 [9] - 네트워크 (0) | 2020.01.16 |
---|---|
Java 공부 정리 [7] - 제네릭 , 컬렉션 (0) | 2020.01.10 |
Java 공부 정리[5] - 추상,인터페이스 (0) | 2020.01.08 |
Java 공부 정리[4] - 배열 (0) | 2019.11.08 |
Java 공부 정리 [3] - 상속(2) (0) | 2019.10.24 |