라이브러리와 모듈
라이브러리
라이브러리는 모든 패키지에 외부 프로그램에서 접근 가능하다.
모듈을 쪼개거나 합쳐서 프로그램 완성이 가능하다.
- export 키워드는 모듈이 가지고 있는 패키지를 외부에서 사용할 수 있도록 노출시키는 역할을 한다.
모듈에 대한 의존 설정을 할때는 requires 키워드를 사용한다 .
requires transitive 모듈이름 //의존설정 전의
- 집합모듈 : 여러 모듈을 모아놓은 모듈을 말한다. 자주 사용되는 모듈들을 일일히 requires 하는 번거로움을 피하고 싶을 때 집합 모듈을 생성하면 편리하다. 모듈 기술자에 전이 의존 설정만 한다.
- 리플렉션 허용 : 리플렉션이란 실행 도중에 타입을 검사하고 구성 멤버를 조사하는것을 말한다 . opens 키워드로 리플렉션 허용을 한다. 지정된 패키지에 대해 특정 외부 모듈에서만 리플렉션 허용도 가능하다.
- java.base : 모든 모듈이 의존하는 기본 모듈이다.
예외처리
예외는 수습이 가능한 오류 정도로 생각하면 쉽다.😉
예외는 예외처리 (try catch finally)로 수습이 가능하다.
- 일반예외(Exception)과 실행 예외(Runtime Exception) 가 있다.
- try블록과 catch 블록에서 return 문을 사용하더라도 finally 블록은 항상 실행된다. (finally 블록은 옵션으로 생략이 가능하다.)
- getMessage(), printStackTrace(), toString() 으로 예외 메세지를 출력 가능하다.
printStackTrace() 같은 경우엔 어디서 어떤 예외가 발생했는지 추적한 내용까지도 출력해준다.
- 두개 이상의 예외를 하나의 catch 블록으로 동일하게 예외 처리하고 싶을 때에는 catch 블록에 예외 클래스를 기호 |로 연결하면 된다.
catch(Exception e | Runtime Exception){...} // |로 구분해주면 된다.
- 메소드,생성자 선언끝부분에 throws 를 입력하여 예외를 떠넘길 수도 있다.
- main() 메소드에서도 예외를 떠넘길 수 있는데 JVM이 최종적으로 예외 처리를 하게 된다.
- 사용자가 직접 예외를 정의 할 수 있다. -> 일반 예외로 선언할 수도 있고, 실행 예외로 선언할 수도 있다.
- 이경우에는 가독성을 좋게 하고 싶을때 사용하면 좋다. 어떠한 문제가 발생했는지 알려주는 용도로 사용하면 굉장히 편하다. 🤩
- 직접 정의할때는 예외 클래스를 생성해 부모 클래스를 상속받으면 된다.
- 예외 생성자와 출력할 메세지를 집어넣은 생성자 총 두개를 선언하면 된다.