JAVA

자바 개발자 양성 과정 4주차[예외]

J휘 2024. 8. 1. 16:40

지난 주 가장 중요한 다형성이 끝나고 이제 남은 것들은

이해하기 보다는 사용법 위주의 것들이라 간단하다고 함..근데 간단하지가 않음;

 

 

[예외처리]

: 소스 수정으로 해결이 가능한 에러를 "예외(Exception)"라고 하는데 

이런 에러를 직접 처리하는 방법.

 

예외도 클래스가 존재하는데 

가장 상위의 클래스가 Throwable이고 그 아래 Error와 Exception으로 나뉜다.

여기서 빨간 줄 위에 해당하는 RunTimeExeption은 대부분 프로그래머의 부주의로 인한 오류가 대부분이 때문에

예외처리보다는 코드를 수정해야 하는 경우가 많다.

 

예외처리방법

예외처리 방법은 2가지가 있다

 

1. Exception이 발생한 곳에서 직접 처리

: try ~ catch문을 이용해서 예외처리하는 것.

이건 보통 코드를 작성하면 자동으로 빨간 줄이 생기면서 try catch 해야 한다고 하기 때문에 따라서 해주면 된다.

그리고 계속해서 코드 작성할 때는 try{} 사이에 작성하면 된다. 이 안에서 생기는 에러를 catch에서 받아주는 것이기 때문.

catch 아래에 finally로 마무리를 하면 좋다고 하는데 필수까진 아닌듯함..(if문의 else 같은 느낌)

 

2. Exception 처리를 호출한 메서드에게 위임 (throws)

메소드메서드 선언 할 때 throws ExceptionName문을 추가해서 호출한 상위 메서드한테 떠넘기는 것.

계속 떠넘기다보면 main() 메서드까지 가게 되고 거기서도 처리 안 하면 에러뜸

그리고 에러 화면에서는 에러가 시작한 메소드부터 호출한 메서드-호출한메소드... 점점 상위 메서드로 가면서 에러가

여러 개 발생한다. (하나의 에러가 타고 타고 가기 때문에 에러가 여러 줄 뜸)

 throws로 예외를 던지게 되면 호출한 부분에서 catch로 받아줘야한다.(이것도 자동으로 뜸)

[기본 API ] 

<Object 클래스>

◾ java.lang 패키지 (import 안 해도 자동으로 import됨)

 모든 클래스는 Object클래스를 상속받음

◾ toString메서드 - 객체의 정보를 String으로 바꿔서 사용할 때 쓰임

◾ equals 메서드 - 두 인스턴스의 주소 값을 비교해서 true / false를 반환함

                #중요# - 인스턴스가 달라도 논리적으로 동일한 경우 true를 반환하도록 재정의 가능

◾ clone 메서드 - 객체의 원본을 복제하는 메서드

 ㄴ 객체의 정보(멤버 변수, 값 등..) 동일한 또 다른 인스턴스가 생성이 된다.

<String 관련 클래스>

◾ String 클래스

-힙 메모리는 생성될 때마다 다른 주소 값을 가지지만, 상수 풀의 문자열은 모두 같은 주소 값을 가진다.

=> equals 비교를 해줘야 한다.

# 같은 수의 리터럴 값은 하나의 주소를 공유한다.(맞나? 일단 문자열은 확실함)

 

< Wrapper 클래스>

: 기본 자료형을 객체화 해주는 클래스

Boxing:  기본 자료형 => 객체화

UnBoxing: 객체 => 기본 자료형

 

근데 이것도 자동으로 해준다.

Interger iObj = 10; // 오토 박싱 진행

Double  dObj = 3.14 // 오토 박싱 진행

 

int num1 =  iObj  // 오토 언박싱 진행

double =  dObj  // 오토 언박싱 진행