일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 후위표기
- java lambda
- 자바 재귀 조합
- java Collections.sort()
- 재귀함수
- java 내부 클래스
- 순열코드
- jquery dom 계층 선택자
- 재귀
- Interface
- char to str
- 알고리즘 그래프
- 자바 순열 코드
- 상속
- Java
- 자바 조합 재귀
- inner class
- jquery 이벤트 처리
- parseInt()
- 자바스크립트 이벤트중지
- jquery 속성선택자
- 조합 재귀
- 서로소
- 자바
- 알고리즘
- str to char array
- jquery 필터선택자
- 자바입출력
- 순열 재귀
- 자바스크립트 이벤트처리
- Today
- Total
유블로그
[Java] 예외(Exception) 본문
[예외]
- 예기치 않은 일의 발생
- try, catch, finally, throws, throw
- 예외 클래스
- 처리하는 방식에 따른 구분 : 간접처리 방식(throws)과 직접처리 방식(try, catch, finally)으로 구분
- 발생하는 시점에 따른 구분 : 컴파일 시점에 발생(checked exception), 런타임 시점에 발생(unchecked exception)
- 자바에서 예외는 모두 클래스로 정의되어 있다.
: ~Exception
<예외 클래스 계층구조>
: Object
↓
: Throwable (에러 중 최상위 클래스. 예외정보들을 가지고 있음)
↓ ↓
: Exception Error
↓ ↓
:RuntimeException 그외..
코드 작성 때는 아무 문제 없었는데 동작시킬 때 exception 뜨면 RuntimeException 이다.
: 사용자가 정의하는 예외
: 예외 클래스 직접 정의 -> 예외 클래스 상속받기
: (RuntimeException 계열을 상속받으면 런타임 발생 예외가 됨)
: (RuntimeException 계열이 아닌 예외 클래스를 상속받으면 컴파일 시점 발생 예외가 됨)
< 직접 exception 정의하기(jvm 은 exception 인 지 알지 못하지만 개발자 입장에서 exception 일 때 사용) >
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Random;
import java.util.Scanner;
/*
예외 클래스 직접 정의하기
class 이름 extends 예외클래스
class MyException extends Exception : 컴파일 시점 체크 예외
class MyException extends RuntimeException : 런타임 시점 예외
JVM 이 알고있는 예외 상황이 아닐 경우 개발자가 직접 예외상황 위치에서 예외를 발생시켜야 한다.
- throw : 예외를 직접 발생시킨다.
throw 예외객체, throw new 예외클래스타입();
*/
class LottoNumberException extends Exception {
public LottoNumberException() {
// Exception(String msg) 생성자 사용
super("로또번호는 1부터 45 사이의 숫자만 가능합니다."); // 에러메세지 등록
}
}
public class Test {
public static void main(String[] args) {
try {
// Scanner sc = new Scanner(new File("a.txt"));
a();
} catch(LottoNumberException e) {
System.out.println("에러메세지 : " + e.getMessage()); // 간단한 에러 메세지
e.printStackTrace(); // 상세한 에러 메세지
}
// catch(FileNotFoundException e) {
// 밑에건 자바 내장 exception 이므로 message가 있으므로 LottoNumberException 에도 내가 직접 에러 메세지를 넣을 수 있다.
// System.out.println("에러메세지 : " + e.getMessage());
// e.printStackTrace();
// }
}
public static void a() throws LottoNumberException { // throws LottoNumberException 적어주는 이유 : 코드 보는 사람이 여기서 에외 발생할 수 있다는 것 알게 하기 위해서
Random r = new Random();
int num = r.nextInt(100); // 0~99까지 나옴.
// 1부터 45 사이의 번호가 아닐 경우 예외를 발생시킨다.
if(num == 0 || num > 45) {
// 예외 발생 시키기
// 만약 a() 뒤에 throws LottoNumberException 안적고 위에서 LottoNumberException class 정의 때extends Exception 이라고 해놓으면 예외처리 안 했다고 에러 발생
throw new LottoNumberException(); // throw Exception 쓰려면 throws 해줘라~
}
System.out.println("발생된 번호 : "+ num);
}
}
'Java' 카테고리의 다른 글
[Java] final (0) | 2020.08.12 |
---|---|
[Java] Abstract, Interface (0) | 2020.08.12 |
[Java] Iterator (0) | 2020.08.11 |
[Java] Collections (+Generic) (0) | 2020.08.11 |
[Java] Inner class (0) | 2020.08.10 |