Exception
-키보드 입력, 파일 처리, 네트워크 처리, DB처리 등 외부와의 작업을 하는 경우
예의치 못한 에러가 발생할 수 있으므로 자바에서는 반드시 예외처리를 하도록 하고 있다.
예외 처리 방법1
: try - catch는 보통 명확환 오류일 때 사용하며, 다중 catch가 가능하다.
try {
//예외발생 지역
//실행코드 1
//int c = System.in.read(); - 예외 발생 (예외 발생 시 밑에 코드 실행 안함)
//실행코드 3
}catch(Exception e) {
//예외 처리 지역
}finally {
//반드시 실행하는 지역(예외가 발생하던 안하던 반드시 실행)
//
}
public class ExceptionEx2 {
// TODO Auto-generated method stub
String str = "";
public void foo(int i) {
try {
if(i == 1) {
throw new Exception(); //고의적 예외 발생(밑으로 내려가지 않는다.)
}
str += "1";
}catch(Exception e) {
str += "2";
return; //메소드를 빠져나감(함정)
}finally { //finally 반드 실행한다.
str += "3";
}
str+= "4";
}
public static void main(String[] args) {
ExceptionEx2 ee = new ExceptionEx2();
ee.foo(0);
ee.foo(1);
System.out.println(ee.str);
}
}
인자 0을 갖는 foo가 먼저 실행되어 처음으로 try문을 만나는데
if문에 해당되지 않으므로 str +="1"을 실행한다. 예외가 발생하지 않았으므로 catch문을 건너뛰고 반드시 실행되는 finally를 만나 str += "3";을 실행한다. 그 다음 str +="4"를 실행하고 빠져나온다. 다음 인자 1을 갖는 foo를 실행하게 되면 if(i == 1) 조건에 일치하므로 고의적으로 발생시킨 예외를 만나게 된다.
예외가 발생하면 str+="1"은 실행하지 않고 건너뛰어 catch문으로 가게되는데 str+="2";를 수행하고 반드시 실행되는 finally를 만나 13423이 출력되게 된다.
'JAVA' 카테고리의 다른 글
[JAVA] IO(InputStreamReader / BufferedReader) (2) (0) | 2020.10.01 |
---|---|
[JAVA] IO(Input / output) (1) (0) | 2020.10.01 |
[JAVA] Random 클래스 - 가위바위보, 로또 번호 생성기 (0) | 2020.09.24 |
[JAVA] 콜렉션 (Collection / 제네릭(Generic) (0) | 2020.09.22 |
[JAVA] 콜렉션-Collection (0) | 2020.09.22 |