throw는 강제로 예외를 발생시키는것이고

throws는 이 메서드에서 예외처리를 하지 않고 던지겠다는겁니다. 

강제로 예외를 발생시키는것은 코드상에서는 예외가 발생하지 않지만 구현하고 있는 시스템에서 봤을때 예외를 발생해
야 할 경우에 쓰입니다.

예를 들어 a라는 값이 1이 되면 안될경우 a값이 1이 들어왔을 때 강제로 예외를 발생시켜 사용자에게 메세지를 보여주
는식으로 이용하죠

checked 예외 - RuntimeException을 제외한 Exception의 하위 클래스
unchekced 예외 - RuntimeException의 하위 클래스
**checked 예외는 반드시 예외처리를 해야 하는 되는 것이고, unchekced는 해도 되고 안 해도 되는 예외**다. 바로 이 
지점이 IOException과 ArithmeticException의 차이점이다. 아래는 두개 클래스들의 가계도를 보여준다.

정리) RuntimeException 포함 관련 하위상속클래스 전부 unchecked, 그 외 나머지는 checked 즉 강제예외처리해야함

 

<예외 처리 기본>

1)

컴파일 에러: 컴파일 할때 발생하는 에러이다.

런타임 에러: 프로그램의 실행도중에 발생하는 에러이다.

 

소스코드를 컴파일 하면 컴파일러가 소스코드(.java)에 대해 오타나 잘못된 구문, 자료형 체크 등의 기본적인 검사를 수행하여 오류가 있는지 알려준다. 컴파일러가 알려 준 에러들은 모두 수정해서 컴파일을 성공적으로 마치고 나면, 클래스 파일(.class)이 생성되고, 생성된 클래스 파일을 실행할 수 있게 되는 것이다.

컴파일러가 소스코드의 기본적인 사항은 컴파일시에 모두 걸러줄 수 있지만, 실행 도중에 발생할 수 있는 잠재적인 오류까지 검사할 수 없기 때문에 컴파일은 잘되었어도 실행 중에 에러에 의해서 잘못된 결과를 얻거나 프로그램이 비정상적으로 종료될 수 있다.

 

자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 '에러'와 '예외' 두 가지로 구분하였다.

에러는 메모리 부족이나 스택오버플로우와 같이 일단 발생하면 복구할 수 없는 심각한 오류이고, 예외는 발생하더라도 수습될 수 있는 비교적 덜 심각한 것이다.

-> 에러와 예외는 모두 실행 시(runtime) 발생하는 오류이다.

 

RuntimeException 클래스들은 주로 프로그래머의 실수에 의해서 발생할 수 있는 예외들로서 자바의 프로그래밍 요소와 관계가 깊다.

--> 프로그래머의 실수로 발생하는 예외

Exception 클래스들은 주로 외부의 영향으로 발생할 수 있는 것들로서, 프로그램의 사용자들의 동작에 의해서 발생하는 경우가 많다.

--> 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외

RuntimeException 클래스들과 Exception 클래스들의 중요한 차이점은 컴파일시의 예외처리 체크여부이다. RuntimeException 클래스들 그룹에 속하는 예외가 발생할 가능성이 있는 코드에는 예외 처리를 해주지 않아도 컴파일 시에 문제가 되지 않지만, Exception 클래스들 그룹에 속하는 예외가 발생할 가능성이 있는 예외는 반드시 처리를 해주어야 하며, 그렇지 않으면 컴파일 시에 에러가 발생한다.

2)

예외 처리의 정의와 목적

프로그램의 실행 도중에 발생하는 에러는 어쩔 수 없지만, 예외는 프로그래머가 이에 대한 처리를 미리 해주어야 한다.

예외처리란, 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것이며 예외처리의 목적은 예외의 발생으로 인한 실행 중인 프로그램의 갑작스런 비정상 종료를 막고, 정상적인 실행 상태를 유지할 수 있도록 하는 것이다.

 

정의:  프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것.

목적: 프로그램의 비정상 종료를 막고, 정상적인 실행 상태를 유지하는 것.

(출처: https://devbox.tistory.com/entry/Java-%EC%98%88%EC%99%B8-%EC%B2%98%EB%9F%AC-%EA%B8%B0%EB%B3%B8 )

day14_Test01_Calendar
day14_Test01_Calendar(2)
day14_Test02_Quiz
day14_Test03_Date
day14_Test04_formatter
day14_Test05_Exception
day14_Test06
day14_Test07
day14_Test08(예외처리방법두가지)
day14_Test09
day14_Test10
day14_Test11(예외 강제로 발생시키기)

 

+ Recent posts