IT자료실/Java

Java(예외 처리, Java.lang 패키지)

Ramda 2022. 4. 14. 00:59

예외 (Exception)

예외의 종류와 계층 구조

  • 예외의 최상위 구조는 Exception이다.
  • 자주 발생하는 예외
    • IOException : 입/출력 과정에서 문제가 발생
    • NumberFormatException : 숫자 형식이 아닌 데이터를 숫자 변경 시도
    • ArrayIndexOutOfBoundsException : 존재하지 않는 배열 공간 사용
    • ArithmeticException : 불가능한 산술연산을 수행

예외 처리 기본

  • 예외 객체를 처리하는 가장 기본적인 방법 try ~ catch 문을 사용한다.
  • try { 정상적인 수행문 } catch(오류 종류 e) { 오류 발생 시 출력문 }
  • 여러개의 오류가 발생하면 다중 catch문을 사용하여 처리한다. (catch문을 연속으로 사용)
  • 코드 에러 안정성의 문제로 마지막에 예외의 최상위클래스인 Exception 타입의 catch문을 추가한다.finally 블록
  • carch(Exception e){ 출력문 }
  • 예외 발생 여부와 무관하게 무조건 실행되는 영역
  • 예외 처리 로직이 종료되기 전에 반드시 실행되어야 한다.

throws 예약어

  • 메서드 오른쪽에 위치한다.
  • 특정 메소드에서 발생한 예외 객체를 해당 메소드를 호출한 쪽으로 책임 전가한다.
    (상위 클래스에 넘기는 의미)
  • 메서드를 여러 개 넣을 수 있다.(콤마 이용)
  • 여러 메서드 에서 발생되는 예외를 특정 메서드로 집중 시킬 수 있다.

thorw 예약어

  • 사용자가 원하는 시점에 강제로 예외를 발생시킬 필요가 있을 때 사용
    (강제로 예외 발생 시켜 더 이상 프로그램이 진행되지 않도록)

Java API 패키지

  • 지금까지는 Java의 문법을 배웠다면, 패키지들을 배우면서 어휘를 공부하는 것이다.
  • 어휘에 해당하는 것이 API (Application Programming Interface)

Java.lang 패키지

  • 모든 Java 프로그램에서 사용하는 필수 클래스를 모아놓은 패키지
  • Java.lang 패키지 클래스는 import선언 없이 사용 가능 (유일하게 lang 패키지만 가능)
  • 대표적으로 Object, String, Wrapper 클래스등이 있다.

Object 클래스

  • 모든 클래스들의 최상위 부모 클래스
  • 모든 클래스의 부모 클래스인 이유
    • java클래스가 반드시 가져야하는 공통의 메서드를 Object 클래스로부터 상속 받도록 한다.
    • 모든 java 객체를 하나의 타입으로 묶어서 다형성을 적용하기 위해 (묵시적 형변환을 통하여)hashcode() 메서드
  • Object 클래스가 제공하는 hashcode()는 생성된 객체의 메모리 주소정보 제공
  • Object 클래스로 부터 hashcode()메서드가 상속되지 않도록 오버라이딩 해야한다.

equals() 메서드

  • 객체 주소가 아닌 내용을 비교하기 위해 사용
  • Object로 부터 상속된 equals 메서드는 '==" 연산자와 동일하게 동작한다.
  • 갹체의 내용을 비교할 수 있게 equals 메서드를 오버라이딩 해야한다.

toString() 메서드

  • 객체가 소유한 멤버변수에 할당된 값을 하나의 문자열로 구성하여 반환
  • 실제 객체가 가지고 있는 멤버변수의 값을 리턴하려면 오버라이딩 해야한다.

Object 클래스 정리

  • 클래스를 생성 했으면 hashcode(), equals(), toString() 세가지 메서드는 Object클래스의 상속을 받지 않도록 오버라이딩 해줘야 한다.

String 클래스

  • 생성법은 두가지 이다
    • 일반 클래스와 같이 new 사용
    • ""로 문자를 감싸서 리터럴 형태로 생성
  • new를 사용하면 메모리에 새로운 String 객체가 생성
  • 리터럴 형대의 문자열을 생성하면 리터럴 영역에 별도의 메모리 생성
  • 정해져 있는 객체 외 추가를 하면 메모리 손실이 많다.

String 메서드

  • 문자열 메서드이다. (char의 배열)
  • 주로 사용되는 메서드
    • .length() : 문자열 길이 반환
    • .indexof() : 문자열에서 index 위치 반환
    • .startsWith(x) : 문자열이 x로 시작하는지 반환
    • .substring(x) : 문자열에서 x번 index 이후 문자열 반환
    • .split(x) : 문자열을 x 기준으로 분리한 단어 반환

Stringbuffer 클래스

  • String이 고정길이 문자열이면, Stringbuffer는 가변길이 문자열
  • String클래스와 달리 문자를 계속 이어 붙여 나갈 수 있다. (메모리 손실이 적다)

Wrapper 클래스

  • 기본타입의 객체를 클래스 형태로 만들어 준다.
  • 기본타입과 동일한 이름의 클래스를 사용한다.
  • 대표적으로 Integer.parseInt 가 있다.