BigData 청년인재 프로그램(Java) - 12. 예외처리
12. 예외처리
6/29(목)Day04
-예외처리가 중요한 이유 : 어떤이유로 에러가 발생하는지 이해해야 하므로 알아야한다.
-에러발생한 내부정보를 감추기 위해 다른코드(system.out.print("~~에러가남"))를 수행
#Class Diagram : 직접 코딩하기 전에 먼저 설계하는 것이 매우 중요
-상속 vs 인터페이스의 차이?
1.상속 : 서브class 가 슈퍼class로 일반화 // 슈퍼class를 서브class로 구체화
2.인터페이스 : 실체class가 인터페이스의 spec(기능)을 실제기능으로 실체화
-의존 vs 연관의 차이?
3.의존 : A클래스가 B클래스의 참조를 매개변수나 지역변수로 가짐
->참조값 유지x
class A { public void func(B b) { b.print(); } }
4.연관 : A클래스가 B클래스의 참조를 필드로 가짐
->참조값 유지o
class A { private B b; public A() { this.b = new B(); b.print(); } }
(의존하는 객체!의 참조값을 지역변수및 매개변수를 넘겨받음
vs 연관된 객채!의 참조값를 멤버로 가짐??)
<1. 예외처리 개념>
1.1예외 vs 에러
-자바 프로그램 실행 중 발생하는 경미한 오류 vs 메모리나 내부의 심각한 문제
-사용자 잘못(복구가능) vs 개발자 잘못(복구불가능)
1.2예외의 종류
-비체크 예외(실행도중 오류) vs 체크 예외(컴파일 오류)
-RuntimeException예외 vs RuntimeException을 제외한 모든 예외
-동적발생 vs 정적발생?
-예외처리를 생략해도 컴파일 가능 vs 예외처리를 하지 않으면 컴파일 오류 발생
-예외처리는 옵션 vs 예외처리가 필수
<2. 예외처리 방법>
2.1 try~catch~finally 문장
-내가 작성한 코드안에서 예외처리
-catch는 여러번 사용가능, 작은범위
-작은범위에서 큰범위로 사용해야 컴파일오류 발생하지 않음
-예외발생이 높은 코드를 먼저 try문에 작성
-finally에는 자원해제와 같이 반드시 실행해야 하는 코드 수행(예외가 났는데 DB con객체등 자원이 해제되지 않으면 deadlock걸릴수 있음)
try {
...
...}catch(ArithmeticException e){<-0으로 나누는 예외(=실행오류)
예외처리 문장
} catch(RuntimeException e){<-비체크 예외(=실행오류)
예외처리 문장
} catch(Exception e){<-모든 예외(=컴파일오류+실행오류)
예외처리 문장
} finally{
항상 실행;
}
2.2 throws 문장
-상위 메서드(다른 메서드)에 예외처리를 미룸
-throws는 예외를 다른 객체로 넘기는 키워드 vs throw는 예외를 강제로 발생시키는 키워드
void method() thorws 예외객체1, thorws 예외객체2, ...{
수행문
}
<3. 사용자 정의 예외>
-사용자가 원하는 상황을 예외로 인식하여 처리할 수 있다.
-체크예외를 정의하려면 -> Exception 클래스 상속하여 예외클래스 정의
-비체크예외를 정의하려면 -> RuntimeException 클래스 상속하여 예외클래스 정의
-main메소드에서 try~catch를 사용하여 예외를 발생시키거나
-thorw키워드를 통해 예외객체를 사용자정의 예외객체로 던질 수 있다.
댓글
댓글 쓰기