코드에서 잘못 작성되어서 발생되는것이 예외
충분히 예측 가능하고 정상적인 흐름으로 가도록 할 수 있다.
프로그램을 완벽하게 개발하기 힘들다.
사용자가 잘못사용하면 예외가 발생할 수 있다.
컴퓨터의 하드웨어 고장으로 오류가 발생하는 것이 '에러'
예외? -> 잘못된 사용, 개발자의 잘못된 코딩으로 인한 오류
예외는 코드로 처리가 가능하다. 정상 실행으로 돌리기가 가능함
exception / runtime exception
실행 예외는 경험에 의해서 예외처리를 해야한다.
자바는 예외가 발생하게 되면 예외객체가 생성이 된다.
그 객체를 이용해서 예외처리를 한다.
예외 클래스라는 클래스에서 예외 객체를 생성한다.
모두 다 알기는 힘들지만 몇가지는 알아야 한다.
예외가 발생하면 프로그램은 예외를 던져버린다.
Throwable의 자식인 Exception에서 예외를 배출한다.
일반예외 실행예외
컴파일러가 예측 가능한 에러 - 일반예외
컴파일러가 예측 및 체크가 불가능한 에러 - 실행예외
try,catch에서 실행후 finally에서 코드 마무리
finally 없어도댐 - 옵션
null의 length를 프린트했는데 null이라면?
java.lang.NullPointerException 발생
java.lang 패키지이름 NullPointerException 클래스이름
결론적으로 NullPointerException 에러가 발생했다.
try catch로 감싸서 실행해야된다.
예외가 발생시 catch블록에서 에러를 처리한다.
printStackTrace(); 예외가 무슨내용인지 출력
예외 별로 다르게 처리하고싶다?
catch를 여러개 사용이 가능하다.
try {}
catch { 예외처리1 }
catch { 예외처리2 }
하지만 여러개가 존재하더라도 하나만 실행하게됩니다
왜? => 예외가 발생하면 프로그램이 종료되기때문에.
ArrayIndexOutOfBoundsException - 배열의 인덱스 초과
NumberFormatException - 변환 불가능한 문자열
Exception e 를 사용시 밑에 남아있는 예외처리 코드는 안됨.
위에서 모든 에러처리를 하고있기 때문에
ArrayIndexOutOfBoundsException | NumberFormatException
이런식으로 or 사용가능
리소스를 사용하려면 open을 해야하며 사용후에는 안전하게 닫아주어야한다.
파일을 읽기위해는 열어야하고 후에는 닫아야된다.
닫지않았다면?
열여있을때 다른프로그램이 사용할 수 도있기 때문에 다른프로그램이
사용 및 오픈하지 못하게 close 해야됩니다.
리소스를 사용중에 예외가 발생 할 수 있다.
사용중에 발생시 catch에서 리소스를 안전하게 받도록 만들어야됨
finally{ file.close(); } 사용
메소드 내부에서 예외가 발생하면 try catch가 기본이지만
메소드를 호출한 곳으로 예외를 넘기기도 가능하다.
이때 사용하는 키워드가 throws 이다.