티스토리 뷰
1. 사용자 정의 예외
- Java가 제공하는 예외 이외의 예외를 만들 수 있다.
- 일반적으로 어플리케이션에서 의도된 예외를 던질 때 사용한다.
실습1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 |
package com.ktds.jmj;
//외워야한다.
public class InvalidNumberException extends RuntimeException { // 예외를 만들때 반드시 extends를 붙여야한다.
public InvalidNumberException() {
super();
}
public InvalidNumberException( String msg ) {
super(msg);
}
public InvalidNumberException( Throwable t ) { // 최상위 예외 클래스 Throwable (모든 예외를 다 포함한다.)
super(t);
}
public InvalidNumberException ( String msg, Throwable cause) {
super(msg, cause);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
} |
cs |
2. Try ~ catch ~ finally
- 예외의 발생여부와 상관 없이 무조건 수행하는 finally 영역.
실습1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 |
package com.ktds.jmj;
public class FinallyTest {
public static void start(){
try{ //try > catch > finally
//int number = Integer.parseInt("abd");
int number = Integer.parseInt("123"); //에러가 발생하지 않으면 11번의 nullpointer에러는 잡는다.
String str = null; //8번에서 에러가 발생하면 바로 15번줄 catch로 넘어가서 무시당한다.
str.length(); //NullPointer 에러발생
System.out.println(number);
}
catch (NumberFormatException | NullPointerException nfe) {
System.out.println("숫자 변환에 실패했습니다. " + nfe.getMessage());
if (nfe instanceof NumberFormatException){ // NumberFormatException의 인스턴스인가
System.out.println("숫자변환을 할 수 없습니다.");
}
else if ( nfe instanceof NullPointerException ){
System.out.println("잘못된 참조입니다.");
}
}
/* catch (NullPointerException npe){ // catch를 또 추가하면 11번라인도 에러를 잡아낸다.
System.out.println("잘못된 참조입니다. 객체가 null이 아닌지 확인하세요.");
}*/
finally { // 에러가 발생하든 안하든 수행된다.
System.out.println("숫자 변환을 종료합니다.");
}
}
public static void main(String[] args) {
// FinallyTest test = new FinallyTest();
// test.start();
// this.start(); start()에 static이 붙으면 this.로 접근 못한다. static void
// start()로 생성한후 메인에서 FinallyTest.start()로 접근
// 독립적인 메모리에 접근하는 방법 첫번째는 static을 붙이는 방법, 두번째는 10 11 라인과 같은 인스턴스화 방법이
// 있다.
FinallyTest.start();
}
}
|
cs |
3. 예외 처리 책임 전달
- 현재 메소드에서 예외가 발생할 때 예외 처리에 대한 책임을 호출자에게 넘긴다.
실습1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 |
package com.ktds.jmj;
public class MakeExceptions {
/**
* 문자를 숫자로 변환한다.
* 만약, 예외상황이 발생하면 적절한 조치를 취해준다.
* @param str
* @return
*/
public int parseInt(String str) {
try {
return Integer.parseInt(str);
}
catch( NumberFormatException nfe ){
return 0;
}
}
/**
* 문자를 숫자로 변환한다.
* 만약, 예외상황이 발생하면 적절한 조치를 취하지 않는다.
* @param str
* @return
* @throws NumberFormatException
*/
/* public int parseInt2( String str ) throws NumberFormatException, NullPointerException { // 처리의 책임을 전가한다.
return Integer.parseInt(str);
}*/
public int parseInt2( String str ) throws NumberFormatException { // 처리의 책임을 전가한다.
return Integer.parseInt(str);
}
/* public int parseInt3( String str ) throws InvalidNumberException { // 반드시 throws로 던져야한다.
* ***extends로 예외를 생성했을때
try {
return Integer.parseInt(str);
}
catch (NumberFormatException nfe) {
System.out.println(str +"은 숫자로 바꿀수없다.");
//throw nfe;
InvalidNumberException ine = new InvalidNumberException(str +"은 숫자로 바꿀수없다.");
throw ine; // 반드시 throw를 던져야한다.
//InvalidNumberException 이 Exception의 한 종류이기 때문에 반드시 throw를 던져야한다.
}
}*/
public int parseInt3( String str ) { // throws를 적지않아도 된다. runtimeException으로 예외를 생성했을 때
try {
return Integer.parseInt(str);
}
catch (NumberFormatException nfe) {
System.out.println(str +"은 숫자로 바꿀수없다.");
//throw nfe;
InvalidNumberException ine = new InvalidNumberException(str +"은 숫자로 바꿀수없다.");
throw ine; // 반드시 throw를 던져야한다.
//InvalidNumberException 이 Exception의 한 종류이기 때문에 반드시 throw를 던져야한다.
}
}
}
|
cs |
'BackEnd > JAVA' 카테고리의 다른 글
주소록 관리 프로그램 (0) | 2016.02.02 |
---|---|
[JAVA] 정규표현식 (0) | 2016.01.29 |
[JAVA] 예외처리(InputMismatchException, ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, FileNotFoundException) (0) | 2016.01.29 |
[JAVA] 마인드맵 그리기 / 컬렉션 프레임워크 / ArrayList (0) | 2016.01.26 |
[JAVA] 클래스(Class), 메소드(Method) , Getter/Setter, 생성자 (1) | 2016.01.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Baekjoon Online Judege
- AlertDialog.Builder
- onPostExecute
- 안드로이드 비콘
- sort
- DFS
- INSERT
- algorithm
- boj
- 예외처리
- jsp
- order by
- 자바
- table
- DP
- onBackPressed
- java
- 이클립스
- list
- 안드로이드 스튜디오
- controller
- maven
- restfb
- indexOf
- mybatis
- servlet
- RequestMapping
- Spring
- REDIRECT
- BFS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함