본문 바로가기

JAVA

(38)
김영한의 실전 자바 중급 1편 (19) 예외 계층1 - 시작 예외를 단순히 오류 코드로 분류하는 것이 아니라, 계층화해서 다양하게 만들면 더 세밀하게 예외를 처리할 수 있다.NetworkClientExceptionV3 : NetworkClient에서 발생하는 모든 예외는 이 예외의 자식이다.ConnectExceptionV3: 연결 실패시 발생하는 예외이다.SendExceptionV3: 전송 실패시 발생하는 예외이다.예외를 계층화하면 다음과 같은 장점이 있다.자바에서 예외는 객체이다. 따라서 부모 예외를 잡거나 던지면, 자식 예외도 함께 잡거나 던질 수 있다.특정 예외를 잡아서 처리하고 싶으면 ConnectExceptionV3, SendExceptionV3 와 같은 하위 예외를 잡아서 처리하면 된다. package exception.ex3;pu..
김영한의 실전 자바 중급 1편 (18) 예외 처리 실습package exception.ex2;public class NetworkClientException2 extends Exception{ private String errorCode; public NetworkClientException2(String message, String errorCode) { super(message); this.errorCode = errorCode; } public String getErrorCode() { return errorCode; }} package exception.ex2;public class NetworkServiceV2_5 { public void sendMessage(St..
김영한의 실전 자바 중급 1편 (17) 자바 예외 처리1 - 예외 계층자바는 프로그램 실행 중에 발생할 수 있는 예상치 못한 상황, 즉 예외를 처리하기 위한 메커니즘을 제공한다. 이는 프로그램의 안정성과 신뢰성을 높이는데 중요한 역할을 한다. 자바는 예외 처리는 다음 키워드를 사용한다.try, catch, finally, throw, throws Object: 자바에서 기본형을 제외한 모든 것은 객체다. 예외도 객체이다. 예외의 최상위 부모도 Object 이다.Throwable: 최상위 예외이다. 하위에 Exception과 Error가 있다.Error: 메모리부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외다.Exception: 체크 예외애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다.Exceptio..
김영한의 실전 자바 중급 1편 (16) 내부 클래스의 활용package nested.inner.ex1;public class Engine { private Car car; public Engine(Car car){ this.car = car; } public void start() { System.out.println("충전 레벨 확인: " + car.getChargeLevel()); System.out.println(car.getModel() + "의 엔진을 구동합니다."); }} package nested.inner.ex1;public class Car { private String model; private int chargeLevel; private Eng..
김영한의 실전 자바 중급 1편 (15) 중첩 클래스, 내부 클래스1 클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스라 한다.Class Outer { //중첩 클래스 class Nested{ .... }} 중첩 클래스 분류중첩 클래스는 총 4가지가 있고 크게 2가지로 분류할 수 있다.정적 중첩 클래스내부 클래스 내부 클래스지역 클래스익명 클래스 Class Outer { //정적 중첩 클래스 static class StaticNested { ... } //내부 클래스 class Inner { ... }} 정적 중첩 클래스는 정적 변수와 같이 앞에 static이 붙어있다.내부 클래스는 인스턴스 변수와 같이 앞에 static이 붙어있지 않다. 정적 중첩 클래..
김영한의 실전 자바 중급 1편 (14) 기간,시간의 간격 - Duration, PeriodPeriod : 두 날짜 사이의 간격을 년, 월, 일 단위로 나타낸다.이 프로젝트는 3개월 정도 걸릴 것 같아기념일이 120일 남았어프로젝트 시작일과 종료일 사이의 간격: 프로젝트 기간Duration : 두 시간 사이의 간격을 시, 분, 초 단위로 나타낸다.라면을 끓이는 시간은 3분이야영화 상영 시간은 2시간이야서울에서 부산까지는 4시간이 걸려package time;import java.time.LocalDate;import java.time.Period;public class PeriodMain { public static void main(String[] args) { //생성 Period period = Period.o..
김영한의 실전 자바 중급 1편 (13) 날짜와 시간 라이브러리가 필요한 이유1. 날짜와 시간 차이 계산특정 날짜에서 다른 날짜까지의 정확한 일수를 계산하는 것은 생각보다 복잡하다. 윤년, 각 달의 일수 등을 모두 고려해야 하며, 간단한 뺄셈 연산으로는 정확한 결과를 얻기 어렵다. 2. 윤년 계산 3.일광 절약 시간 변환3월에서 10월은 태양이 일찍 뜨고, 나머지는 태양이 상대적으로 늦게 뜬다. 시간도 여기에 맞추어 1시간 앞당기거나 늦추는 제도를 일광 절약 시간제 또는 썸머 타임이라 한다. 국가나 지역에 따라 적용 여부와 시작 및 종료 날짜가 다르다. 이로인해 1시간의 오차가 발생할 수 있다. 이를 정확히 계산하는 것은 복잡하다. 4. 타임존 계산세계는 다양한 타임존으로 나뉘어 있으며, 각 타임존은 UTC로 부터의 시간 차이로 정의된다. 5..
김영한의 실전 자바 중급 1편 (12) 열거형 - 주요 메서드모든 열거형은 java.lang.Enum 클래스를 자동으로 상속 받는다. package enumeration.ex3;import java.util.Arrays;public class EnumMethodMain { public static void main(String[] args) { Grade[] values = Grade.values(); System.out.println("values = " + Arrays.toString(values)); for(Grade value : values){ System.out.println("name = " + value.name() + ", ordinal = " + value.ord..