throw 키워드는 RuntimeException의 경우 사용하지 않는다. RuntimeException에는 NPE, IndexOutOfBoundsException, ArithmeticException 등이 있다.
런타임에 예외가 발생했을 경우, 해당 예외를 직접 처리하지 않고, 다른 곳에서 처리하도록 예외를 던지겠다. 이런 의미를 갖고 있다. 직접 처리한다 라는 표현은 try-catch문으로 처리함을 의미.
예외가 발생하면 발생한 지점부터 그 후 코드들은 중단되며 해당 메소드를 호출한 메소드한테 예외가 던져진다.
JVM이 해당 예외를 받아서 처리하게 된다. 즉, 이렇게 할 경우 코드 실행은 즉시 중단되며, 예외에 대한 레포트가 화면에 출력되고 프로그램은 종료된다.
1) Scanner
2) BufferedReader
Scanner의 경우 BufferedReader보다 속도가 느리다.
BufferedReader는 무조건 문자열로 받아오기 때문에 정수형이나 실수형 변수에 저장하려면 입력과 형변환을 해줘야 한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader는 문자기반 보조 스트림.
BufferedInputStream, BufferedOutputStream 이런 것도 존재한다.
Data 입출력이 일어나는 실제 Data를 주고받는 스트림은 아니다. 기능 향상, 기능 추가를 위한 목적의 스트림이다.
먼저 기반 스트림으로 동작하고 이후 보조 스트림으로 동작.
Buffer 제공 목적이 있다.