오늘한일
- 자바공부- 예외 발생과 try-catch, finally문, Wrapper 객체, 쓰레드에 대해 공부하였다.
(배운점 정리)
예외처리의 흐름
1. 우리가 예외를 어떻게 정의하고,
2. 예외가 발생 할 수 있음을 알리고,
3. 사용자는 예외가 발생 할 수 있음을 알고 예외를 핸들링하는지
package fourthJava;
class OurBadException extends Exception {
public OurBadException() {
super("위험한 행동을 하면 예외처리를 꼭 해야합니다!");
}
}
package fourthJava;
class OurClass {
private final Boolean just = true;
// 신규 문법 throws!
public void thisMethodIsDangerous() throws OurBadException {
if (just) {
// 신규 문법 throw!
throw new OurBadException();
}
}
}
package fourthJava;
public class StudyException {
public static void main(String[] args) {
OurClass ourClass = new OurClass();
try {
// 1. 위험한 메소드의 실행을 "시도" 해 봅니다.
// "시도" 해보는 코드가 들어가는 블럭입니다.
ourClass.thisMethodIsDangerous();
} catch (OurBadException e) {
// 2. 예외가 발생하면, "잡아서" handling 합니다.
// 예외가 발생하는경우 "handling" 하는 코드가 들어가는 블럭입니다.
// 즉 try 블럭 내의 구문을 실행하다가 예외가 발생하면
// 예외가 발생한 줄에서 바로 코드 실행을 멈추고
// 여기 있는 catch 블럭 내의 코드가 실행됩니다.
System.out.println(e.getMessage());
} finally {
// 3. 예외의 발생 여부와 상관없이, 실행시켜야 하는 코드가 들어갑니다.
// 무조건 실행되는 코드가 들어가는 블럭입니다.
System.out.println("우리는 방금 예외를 handling 했습니다!");
}
}
}
쓰레드
쓰레드는 프로세스내에서 일하는 일꾼(코드실행의 흐름)이라고 생각하면 됩니다.
- 쓰레드의 생성
- 프로세스가 작업중인 프로그램에서 실행요청이 들어오면 쓰레드(일꾼)을 만들어 명령을 처리하도록 합니다.
- 쓰레드의 자원
- 프로세스 안에는 여러 쓰레드(일꾼)들이 있고, 쓰레드들은 실행을 위한 프로세스 내 주소공간이나 메모리공간(Heap)을 공유받습니다.
- 추가로, 쓰레드(일꾼)들은 각각 명령처리를 위한 자신만의 메모리공간(Stack)도 할당받습니다
- Java 쓰레드- 일반 쓰레드와 동일하며 JVM 프로세스 안에서 실행되는 쓰레드를 말합니다.
- Java 프로그램을 실행하면 앞서 배운 JVM 프로세스 위에서 실행됩니다.
- Java 프로그램 쓰레드는 Java Main 쓰레드부터 실행되며 JVM에 의해 실행됩니다.
Wrapper 객체
- 기본값을 객체화 하는것을 박싱 이라고 하며, 객체를 다시 기본값으로 만드는 것을 언박싱이라고 합니다.
- 이러한 것들을 조금 더 문법적으로 자연스럽게 보여주기 위해서 오토박싱, 오토언박싱이라는 것도 존재합니다.
Integer num = new Integer(17); // Boxing
int n = num.intValue(); // UnBoxing
Character ch = 'X'; // AutoBoxing
char c = ch; // AutoUnBoxing
박싱해서 객체화된 원시값들은 이제 클래스처럼, 구현되어있는 메소드들을 자유롭게 이용이 가능하고, 객체만 할 수 있는 것들을 할 수 있게 됩니다
느낀점
-자바공부를 하면서 정리를 열심히 해야겠다.
'TIL' 카테고리의 다른 글
231019_TIL (0) | 2023.10.19 |
---|---|
231018_TIL (0) | 2023.10.19 |
231016_TIL (0) | 2023.10.17 |
231013_TIL (0) | 2023.10.15 |
231012_TIL (1) | 2023.10.13 |