[Java] 예외 계층과 실무에서의 예외 처리 방법
·
BackEnd/Java
언체크 예외는 체크 예외와 기본적으로 동일하다. 차이가 있다면 예외를 던지는 throws를 선언하지 않고 생략 할 수 있다. 생략한 경우 자동으로 예외를 던진다.RuntimeException을 상속받은 클래스는 언체크 예외가 된다.언체크 예외는 컴파일러가 체크 안하기 때문에 throws로 나열하지 않아도 됨.예외도 객체다. 필요한 필드와 메서드를 가질 수 있다.try catch finallytry -> 정상적인 흐름catch -> 예외 흐름finally -> 마무리 흐름finally 선언시 try catch블록의 흐름에 상관없이 finally 안의 로직은 반드시 실행하게 된다.try { client.connect(); client.send(data); } catch (NetworkCl..
[Java] Exception과 throw, throws, try catch 가 언제 사용 되는가
·
BackEnd/Java
저는 이전에 예외를 처리할 때, 그저 컴파일러에서 추천해주는 해결법으로 alt enter 클릭으로 수정하는 것 밖에 안했습니다. 에러를 대응 하는 방법을 잘 몰랐는데 이번에 공부하면서 알게 되었기 때문에 포스팅 합니다.Exception자바의 예외 처리는 다음 키워드를 사용한다.try, catch, finally, throw, throwsObject -> Throwable -> ExceptionRuntimeException을 제외한 Exception을 상속한 예외는 모두 컴파일러가 체크한다RuntimeException은 언체크 예외, 애플리케이션 구동중 발생하는 에러알 수 없는 에러이기 때문에 좋지못하다.예측 불가능한 에러는 좋지못한 에러 -> Unchecked Exception예측 가능한 컴파일 단계에서..
[Java] 이것이 자바다 - 3장 연산자
·
BackEnd/Java
오버플로우(overflow)와 언더플로우(underflow)오버플로우는 타입이 허용하는 최대 값을 벗어나는 것을 말한다. 반대로 언더플로우는 타입이 허용하는 최소값을 벗어나는 것을 말한다.정수 타입 연산에서 오버플로우 또는 언더ㅡㄹ로우가 발생되면 실행 에러가 발생할 것 같지만, 그렇지는 않고 해당 정수타입의 최소값 또는 최대값으로 되돌아간다.예를 들어, byte 타입의 최대값인 127에 1을더하면 오버플로우 -127에 1을 빼버리면 언더플로우다.정확한 계산은 정수연산으로산술 연산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 않는 것이 좋다.정확한 연산을 원한다면 정수연산으로 변경해서 다음과 같이 계산하는 것이 좋다.나눗셈 연산의 오류처리나눗셈 또는 나머지 연산에서 좌측 피연산자가 정수이고 우측 피연산..
[Java] 이것이 자바다 - 2장. 변수와 타입
·
BackEnd/Java
프로그래머가 직접 입력한 값 - 리터럴(literal)Long 타입은 수치가 큰 데이터를 다루는 프로그램에서 사용된다.은행이나 과학분야에서 사용함기본적으로 컴파일러는 정수 리터럴을 int타입 값으로 간주하기 때문에 int 타입을 초과하는 리터럴은뒤에서 소문자l이나 대문자L을 붙여 long타입 값임을 컴파일러 에게 알려줘야함하나의 문자를 작은 따옴표로 감싼 것을 문자 리터럴이라고 한다.유니코드로 변환되어 저장된다.유니코드 ?세계 각국의 문자를 0 - 65535 숫자로 매핑한 국제 표준 규약double floatdouble은 float보다 약 2배의 유효 자릿수를 가지기 때문에 보다 정확한 데이터 저장이 가능하다.double이라는 이름도 float보다 2배의 정밀도를 갖는다는 의미String 타입은 자바 기..
[Java] 스프링 개구리 책 - 붕어빵틀과 붕어빵에 대한 오해
·
BackEnd/Java
흔히들 자바의 클래스를 설명할때 붕어빵과 붕어빵 틀에 대해 얘기한다.내가 요즘 읽고있는 책에서는 이러한 설명방식이 잘못된 설명방식 이라고 이야기 한다.평소에 붕어빵틀 - 붕어빵으로 클래스를 이해해 왔기에 글을 읽고 생각하는 시간을 가져보았다.클래스 vs 객체 - 붕어빵틀과 붕어빵??..클래스 객체명 = new 클래스();여기 까지는 이해하기 어렵지 않다.그렇다면 아래 코드는?붕어빵틀 붕어빵 = new 붕어빵틀(); ??바로 위의 코드가 논리에 맞다고 생각한다면, 다시 한 번 생각해보는 것이 좋을 것 같다..위의 코드를 이해하기 쉽도록 문장으로 풀어본다면,새로운 붕어빵틀을 만들었더니 붕어빵이 되었다 이것이 붕어빵틀 to 붕어빵으로 이해하여 오류가 생긴 부분이라고 생각한다.객체지향적인 개발을 할때는 반드시 ..
[Java] 순수 자바 코드로 스프링 프레임워크 구현하기 - Servlet
·
BackEnd/Java
사내 스터디로 스프링 프레임워크를 직접 자바 코드로 구현하는 것을 주제로 잡아 공부하고 있다.첫번째는 Servlet이다.Servlet 이란?Servlet은 자바를 사용하여 웹 서버에서 실행되는 서버 프로그램입니다.보통 HTTP 요청을 처리하고, 동적인 웹 콘텐츠를 생성하는데 사용을 합니다.서블릿은 Java EE(Enterprise Edition) 플랫폼의 일부로,웹 애플리케이션의 요청과 응답을 처리하기 위한 표준 API를 제공합니다.Servlet 의 주요 특징Servlet은 자바 클래스이며, 'javax.servlet' 패키지에 속합니다. HttpServlet 클래스를 상속받아 구현됩니다.Servlet은 생성, 초기화, 요청 처리, 소멸 의 순서로 라이프사이클을 가집니다.Servlet 구현 및 테스트스터..
[Spring] 싱글톤 컨테이너, 컴포넌트와 컴포넌트 스캔
·
BackEnd/Java
싱글톤 컨테이너 스프링 컨테이너는 싱글톤 패턴의 문제점들을 해결하면서, 객체 인스턴스를 싱글톤으로 생성한다. 스프링에서는 싱글톤 패턴을 구현하기 위한 지저분한 코드가 필요없다. DIP, OCP , 테스트, private 생성자로 부터 자유로워진다. 스프링 컨테이너를 사용하면 기본적으로 싱글톤으로 사용된다. 싱글톤 방식말고 요청할때마다 새로운 객체를 생성해서 반환하는 기능도 제공한다. 하지만 거의 대부분 99% 싱글톤 방식을 사용한다. 싱글톤 방식의 주의점 싱글톤 패턴이든, 스프링 컨테이너든, 하나만 생성해서 공유하는 싱글톤 방식은, 상태를 유지하게 설계되면 안된다. 무상태로 설계해야한다 특정 클라이언트에 의존적인 필드가 있으면 안된다. 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다. 가급적..
[Java] Optional(옵셔널) 이란?
·
BackEnd/Java
Optional 옵셔널이란 무엇인가? 옵셔널은 자바 8에서 도입된 클래스로, null 값을 안전하게 처리하기 위한 도구입니다. 옵셔널은 값이 존재하는 경우 Optional 객체에 값을 감싸서 저장하고, 값이 없는 경우에는 빈 Optional 옵셔널의 장점 NullPointerException 방지: 옵셔널을 사용하면 null 값으로 인한 NullPointerException을 예방할 수 있습니다. 코드 간결화: null 체크 코드를 생략하여 코드를 간결하게 작성할 수 있습니다. 코드 안전성 향상: null 값으로 인한 오류를 줄여 코드의 안전성을 높일 수 있습니다. 옵셔널 생성 Optional.of(value): 값이 null이 아닌 경우 옵셔널 객체를 생성합니다. Optional.ofNullable(v..