Java Basic: try-catch

1 분 소요

.next() vs .nextLine()

Scanner sc = new Scanner(System.in); sc.next()와 sc.nextLine() 은 동작방식이 다르다!

어떻게 다른지 알아보자.

  • next() : 입력을 구분을 스페이스, tab, 엔터로 구분한다.
  • nextLine() : 입력을 엔터로만 구분한다. -> 띄어쓰기 입력 가능

그래서, 이것을 같이 사용할 때에는 문제가 발생한다. 우리가 키보드로 부터 입력하는 모든 것들은 “입력버퍼”를 통하여 변수에 대입된다. next()와 nextLine()을 같이 사용할 때에는 입력버퍼의 내용을 지워주고 사용해야 한다. 입력버퍼의 내용을 지워주기 위해서는 nextLine()을 한번 더! 사용하면 된다.


자바의 컬렉션프레임워크에 대해서 설명해보자.

많은 양의 데이터를 처리하기 위하여 일반적으로 배열을 사용한다. 그러나 배열은 자료형이 같아야 하고 크기가 고정되어 있다. 이러한 단점을 해결하기 위해 자바에서는 동적 배열을 위한 컬렉션프레임워크를 이용한다.

컬렉션프레임워크의 종류에는 Set, List, Map 이있다. Set 은 중복된 자료 허용 x List는 중복 자료 허용 Map은 key value가 한쌍으로 이루어진 자료구조이다.


예외처리

프로그램의 문법에는 오류가 없으나 실행중에 사용자의 부주의 등으로 발생하는 예기치 않은 상황을 “예외”라고 하며 이러한 “예외”를 처리하는 것을 말한다.

예기치 않은 상황은 다양할 수 잇따. 예를들면 정수를 입력하는 자리에 문자열을 입력한다던가 또, 숫자를 0으로 나눈다던가 또 배열의 인덱스를 넘은 범위를 사용한다던가..

이러한 예외는 대체로 사용자의 부주의로 일어나는데 이것을 예외처리 해야합니다.

-> 자바에서는 대부분의 예기치 않은 상황에 대한 “예외”클래스가 이미 만들어져있다. 예를 들면 배열의 범위를 넘는 경우 java.lang.ArrayIndexOutOfBoundsException 클래스형의 객체가 자동으로 생성된다.

예외처리 하는 방법

try{
	예외가 발생할만한 명령어()
}catch(예외클래스명 변수명){
	예외가 발생되었을때 처리할 명령어()
}catch(예외클래스명2 변수명){
	예외가 발생되었을때 처리할 명령어()
}catch(예외클래스명3 변수명){
	예외가 발생되었을때 처리할 명령어()
}

** 예외클래스들도 상속계층으로 구성되어 있으며 모든 예외들의 제일 조상은 Exception이다.

Exception 하나만 받은 catch 절로도 모든 예외상황에 대하여 뭉쳐서 처리할 수 있다.

** catch절을 여러개 쓸 경우에는 범위가 작은 순으로 오도록 해야 합니다.