try~catch
자바는 예외처리를 위해서 try~catch 문을 제공하고 있다. try와 catch는 하나의 문장을 구성하지만
각각의 중괄호를 이용한 별도의 영역을 형성하게 된다.
try 는 예외상황이 발생할 만한 영역을 감싸는 용도로 사용이 되고
catch는 발생한 예외의 처리를 위한 코드를 묶어두기 위한 용도로 사용이 된다.
catch 영역에서 예외상황이 처리되기 때문에 소스코드상에서 예외상황의 처리를 위한 코드를 아주 쉽게 구분할수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.util.Scanner; public class DivideByZero { public static void main(String[] args){ System.out.print("두개의 정수 입력"); Scanner sc= new Scanner(System.in); int num1 = sc.nextInt(); int num2 = sc.nextInt(); try{ System.out.println("나눗셈 결과의 몫 : "+(num1/num2)); System.out.println("나눗셈 결과의 나머지 : "+(num1%num2)); }catch(ArithmeticException e){ System.out.println("나눗셈 불가능"); System.out.println(e.getMessage()); } System.out.println("프로그램 종료"); } } | cs |
자바 가상머신이 예외상황이 발생한것을 인식하면 이상황을 위해 정의된 ArithmeticException 클래스의 인스턴스를 생성하고
생성된 인스턴스의 참조 값을 catch 영역에 선언된 매개변수에 전달한다.
예외클래스
ArithmeticException 과 같이 예외상황을 알리기 위해 정의된 클래스들을 가리켜 '예외 클래스' 라 한다.
e.getMessage() 메서드는 예외상황을 알리기 위해 정의된 모든 예외 클래스들이 상속하는
Throwable 클래스에 정의된 메소드이다. 모든 예외 클래스는 Throwable 클래스를 상속한다.
finally
예외상황의 발생여부와 상관없이 항상 실행되는 영역
finally 영역은 try~catch 문의 마지막에 삽입되어 예외상황의 발생 여부와 상관없이 실행된다.
try 영역에 들어가면 무조건 실행된다 실행의 흐름 중간에 return을 하더라도 finally영역은 실행되고 나서 빠져나가게 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class FinallyTest { public static void main(String[] args){ try{ }catch(Throwable e){ }finally{ System.out.println("예외상황 발생과 상관없이 실행되는 영역"); } } } | cs |
'Java' 카테고리의 다른 글
자바 메모리 모델 (0) | 2017.02.25 |
---|---|
예외클래스 정의 / throw / throws (0) | 2017.02.25 |
인터페이스 interface (0) | 2017.02.25 |
abstract 클래스 (추상 클래스) (0) | 2017.02.25 |
final 클래스/final 메소드 (0) | 2017.02.25 |