프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성한 것.
try 블록에는 예외발생 가능 코드가 위치하고 만일 코드에 오류가 발생되면, 오류 종류(예외 클래스)에 맞는 catch 문으로 가서 catch 블록 안에 있는 코드를 실행 시킨다. 만일 오류가 발생하지 않으면 catch 문은 실행하지 않는다.
try
- try 블록 안에 예외가 발생할 가능성이 있는 코드를 작성한다. 만약, 작성한 코그다 예외 없이 정상적으로 동작하면 catch 블록은 실행되지 않고, 예외처리를 종료하거나 finally 블록이 실행된다.
catch
- try 블록에서 예외가 발생할 경우 실행되는 코드 블록이다. 여러 종류의 예외 처리가 가능하다.
- 괄호() 안에 Exception 클래스를 작성한다면, 모든 예외에 대하여 처리가 가능하다.
-특정 예외에서만 처리하고 싶다면 괄호() 안에 특정 예외에 대한 클래스를 작성한다.- catch 블록이 여러 개인 경우, 일치하는 하나의 catch 블록만 실행되고 예외처리를 종료하거나 finally 블록으로 넘어가게 된다.
finally
- finally 블록은 옵션으로 꼭 작성해야 하는 것은 아니다.
- 만약 finally 블록을 작성한다면, 예외 발생 여부와는 상관없이 항상 실행한다.
try - catch 문 안에 try - catch 문을 사용할 수 있지만, 코드가 복잡해 지므로 되도록 사용하지 않는다.
여러 오류가 발생할 경우 오류가 발생할 곳에 여러개의 catch 문을 사용한 뒤 마지막에는 catch(Exception e)로 오류를 잡아내는 것이 좋다.
throw와 throws는 둘 다 Exception을 발생시킨다는 공통점을 가지고 있다.
throw : 개발자가 의도적으로 예외를 발생시키는 것.
throw 사용하는 이유
- 예외가 발생할 수 있는 코드가 있다는 것을 인지시키고 예외처리를 강요하며, 여러 가지 발생 가능한 예외들을 호출한 메서드에서 한 번에 처리할 수 있게 하여 관리를 용이하게 해 줄 수 있다.
throws : 메서드 내에서 예외처리를 하지 않고 해당 메서드를 사용한 곳에서 예외 처리를 하도록 예외를 위로 던지는 것이다. (에외 전가)
정리
- throw는 강제로 예외를 발생시키는 것이며 개발자의 판단에 따른 처리가 가능하다
throws는 자신을 호출한 메서드에게 책임을 전가하여 호출한 메서드에서 예외처리를 하도록 강요