예외: 프로그램에 문제가 있는 것. 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
cf) 에러 : 컴퓨터 하드웨어의 오작동 또는 고장으로 인해 응용프로그램에 이상이 생겼거나 JVM실행에 문제가 생겼을 경우 발생하는 것.
예외처리 : 예외로 인해 시스템 동작이 멈추는 것을 막는 것
NullPointerException
,ArrayIndexOutOfBoundException
, ArithmeticException
등.
특히 NullPointerException
은 자바 프로그램에서 가장 빈번하게 발생하는 에러이다.
이 에러는 객체가 없는, null
값을 갖는 객체를 참조하려고 하니 예외가 발생한다.
throw new exception
으로 예외를 강제로 발생시킨다.
throw new Exception()
으로 예외를 강제로 발생시키고, catch(Exception e
)문에서 예외 발생 시 처리할 코드를 적는다.이를 하면 예외 발생 시 예외 처리를 직접 하지 않고 호출한 곳으로 넘긴다.(Exception e
)
try, catch
try
에는 예외가 발생할 수 있는 코드를 작성하고,
catch
를 통해 예외가 발생하였을 때 수행할 코드를 작성한다.
try {
예외가 발생할 수 있는 코드
} catch(Exception e){
예외가 발생했을 때 처리할 코드
}
추가로 여기에 finally
까지 붙이면 예외 발생 여부에 상관없이 언제나 실행되는 부분이다.
try catch
문은 주로 데이터베이스에 데이터를 주고받을 경우 많이 사용한다. 데이터베이스를 거쳐올 때 변수가 많이 생기기 때문이다.
throws
어떤 메소드의 내부 소스코드에서 에러가 발생하였을 때 예외처리를 try, catch
로 자기 자신이 하는 것이 아니라 이 메소드를 사용하는 곳으로 책임을 전가.
public 반환값 메서드이름 throws Exception{
if(){
throw new Exception();
}
}
위와 같은 코드에서는 throws
구문 때문에 예외를 처리해야하는 대상이 해당 메서드에서 main
메서드(해당 메서드를 호출하는 메서드)로 변경되었다. 따라서 main
메서드에서는 try catch
로 예외처리를 해주어야한다.