일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- driver
- Oracle
- JDBC
- DB연동
- InputStream
- stream
- 16bit
- Connection
- select
- Annotaion
- 자바
- Transaction
- where
- transient
- swing
- Reader
- 예외처리
- set
- statement
- 조회
- 다이얼로그
- 8bit
- array
- DB
- 오라클
- java
- Serializable
- 난수
- 상속
- Join
- Today
- Total
오버플로
[Java] Exception Handling - throws / throw / 사용자 정의 예외처리 Class 본문
1. throws (예외 날림)
- method 뒤에 정의하여 method 안쪽에서 발생된 예외를 호출한 곳에서 처리하도록 할 때 사용
- method를 호출한 곳에서 예외를 처리함 (예외가 발생된 곳과 예외를 처리하는 코드를 분리할 수 있음)
- 예외를 날리면 method 안에서는 해당 예외를 try~catch로 처리할 필요가 없음
- method를 호출한 곳에서는 throws된 Exception을 try~catch
or 또 다른 method로 throws
- 문법) method header의 가장 마지막에 정의
public void test() throws 예외처리클래스명,,,(여러 개 가능) {
}
* throws 예외처리클래스명
- CompileException/RumtimeException 다 가능
- method 안에서 발생된 예외
* try ~ finally 문법 :
- method 안에서 같은 Exception이 여러 개 발생했을 때,
method header에서 throws를 사용하면 method를 호출한 곳에서 한 번만 try~catch 처리하면 되므로
method 내에서는 try문과 반드시 실행해야 할 finally문만 남게 됨
2. throw (예외 강제 발생)
- 개발자가 특정 상황에서 예외를 발생시켜 코드를 처리하는 방법
- 발생된 예외는 try~catch 또는 thorws(권장)로 처리 (throw는 throws로 처리하는 걸 권장)
- 사용자 정의 예외처리 클래스와 같이 사용됨
- 문법) throw new 예외처리클래스();
3. 사용자 정의 예외처리 클래스
- java에서 제공하는 예외처리 클래스가 현재 구현하는 업무에 부합되는 것이 없을 때,
현재 업무에 맞는 예외처리 클래스를 제작하여 사용하는 것 (가독성향상)
Ex) 로그인 실패 상황에 대한 예외처리 : FailedLoginException (java에서 예외 제공함)
입금하는 일에 대한 예외처리 : java에서 제공하는 예외처리 클래스가 없음 (내가 만들자!)
- 작성법)
1. 내가 만든 클래스가 예외의 처리기능을 가지고 있어야 함 -> 상속으로 처리
2. Exception 만들기 (class naming : 업무명+Exception으로 naming (Ex.TestException) )
- CompileException : Exception 상속
- RuntimeException : RuntimeException 상속
Ex) public class TestException extends Exception or extends RuntimeException{
public TestException(){
super(“예외가 발생했을 때 출력할 메시지”) }
# 오늘의 코딩 #
- 초등학생일 경우에만 예외를 발생시켜보자
- 사용자 정의 예외처리 클래스를 작성하고, method에서 throw/throws한 다음
호출 시킨 곳에서 예외처리하기!
import java.util.Random;
/**
* 사용자정의 예외처리 클래스를 사용해보자<br>
* 초등학생은 예외발생시키기
* @author user
*/
public class UseThrow {
public String checkAge() throws AgeException{
String result = "";
String[] schoolGrade = {"초등학생","중학생","고등학생","대학생"};
Random random = new Random();
int flag = random.nextInt(schoolGrade.length);
if(flag==0) {//초등학생인 경우 예외를 발생시킴
throw new AgeException(schoolGrade[flag]+ " 입장불가 / 중학생 이상만 입장 가능합니다!");
}// end if
result = schoolGrade[flag] +" 입장 가능";
return result;
}//checkAge
public static void main(String[] args) {
UseThrow ut = new UseThrow();
try {
String result = ut.checkAge();
System.out.println(result);
} catch (AgeException e) {
e.printStackTrace();
}//end catch
}//main
}//class
- 사용자 정의 예외처리 클래스는 간단하게 만든당
@SuppressWarnings("serial")
public class AgeException extends Exception {
public AgeException() {
this("어린이는 입장 불가합니다.");
}// AgeException
public AgeException(String msg) {
super(msg);
}// AgeException
}// AgeException
# 출력 결과 #
1) 초등학생이 아닌 경우 정상 처리 :
대학생 입장 가능
2) 초등학생인 경우 예외 발생 :
AgeException: 초등학생 입장불가 / 중학생 이상만 입장 가능합니다!
at UseThrow.checkAge(UseThrow.java:19)
at UseThrow.main(UseThrow.java:30)
'Java' 카테고리의 다른 글
[Java] IO Stream 활용 (1) - 파일 읽기 (0) | 2021.08.30 |
---|---|
[Java] IO(Input/Output) Stream - 8bit Stream, 16bit Stream / File Class (0) | 2021.08.29 |
[Java] Exception Handling - Try~catch / Finally (0) | 2021.08.25 |
[Java] Exception Handling (0) | 2021.08.24 |
[Java] File Dialog (0) | 2021.08.23 |