# exception

402개의 포스트

백엔드 데브코스 TIL #1

Enum 활용 > Enum 과 Funtional Interface 👋 Enum 은 단순히 타입을 지정하고 상수 매핑하는 것 말고도 활용도가 높다. 그 예시를 코드로 간단하게 들어보겠다. 예시는 간단히 A면 "A"를 이어 붙이고 B면 "B"를 이어 붙이는 로직을 보여보겠다. 위 command enum 코드를 사용하면 before -> after 로 if/else 문을 제거하며 간략히 만들 수 있다. 장점을 정리하자면 if/else 문의 분기문이 없어진다. 코드도 간결해지고 가독성이 좋아진다 👍 클라이언트가 해당 핵심 로직에 대해서 구체적으로 몰라도 된다. 즉 해당 enum 타입만 알면된다(추상화를 적용하며 다형성을 얻어갈 수 있다) 👍 핵심 로직이 enum 에 모여있어서 응집력이 올라간다 👍 Java 의 Exception Checked Exception 과 Unchecked Excepti

어제
·
0개의 댓글
·
post-thumbnail

TRY CATCH

try - catch 문을 알기 전에 예외(exception)을 먼저 알고 가보자 예외 프로그램 실행 중에 발생되는 의도하지 않은 문제 발생을 의미합니다. 예외가 발생되면 프로그램은 비정상종료 됩니다. 예외처리 예외발생시 비정상 종료 되는 프로그램을 정상종료 로 처리하는 작업을 의미 합니다. 예외 클래스 계층 구조 일반적으로 Exception 클래스를 예외 클래스의 최상위 클래스로 간주합니다. 예외 종류 2가지 1) compile checked 예외 컴파일시 예외처리 여부를 컴파일러가 체크하여 예외처리가 안되어 있으면 컴파일 에러가 발생됩니다. IOException 과 SQLException 계열에 해당됩니다. 이것은 자바 I/O 및 데이터베

3일 전
·
0개의 댓글
·

Interceptor

Interceptor Interceptor(인터셉터)는 웹 애플리케이션에서 요청과 응답을 가로채어 처리하는 미들웨어(Middleware) 컴포넌트입니다. 주로 스프링 MVC와 같은 웹 프레임워크에서 사용되며, 다음과 같은 목적으로 사용됩니다: 요청/응답 전/후 처리: Interceptor는 클라이언트의 요청이 컨트롤러에 도달하기 전과 컨트롤러에서 응답을 생성한 후에 추가적인 처리를 수행할 수 있습니다. 예를 들어, 로깅, 인증 및 권한 검사, 특정 헤더 추가, 요청 및 응답 데이터 변환 등의 작업을 수행할 수 있습니다. 글로벌 기능 추가: Interceptor를 사용하여 모든 컨트롤러나 특정 컨트롤러에서 공통으로 사용되는 기능을 중앙에서 구현할 수 있습니다. 이로써 코드 중복을 피하고 유지 보수성을 향상시킬 수 있습니다. 보안 및 권한 관리: 인증 및 권한 검사, 토큰 기반 인증, CORS (Cross-Origin Reso

2023년 9월 12일
·
0개의 댓글
·

[JAVA] Error & Exception

📌 Error(오류) > 시스템 레벨에서 발생하여 개발자가 조치할 수 없는 수준 ➡️ 컴파일 시 문법적인 오류와 런타임시 널포인트 참조와 같은 오류로 프로세스에 심각한 문제를 야기시켜 프로세스를 종료시킬 수 있음 ex. 메모리 부족, 스택 오버플로우 OutOfMemoryError JVM에 설정된 메모리의 한계를 벗어난 상황일 때 발생 힙 사이즈 부족, 너무 많은 class 로드, 가용 가능한 swap이 없을 때, 큰 메모리의 native 메소드가 호출될 때 등 ➡️ dump 파일분석, JVM 옵션 수정 등으로 해결 가능 📌 Exception(예외) > 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생 ➡️ 컴퓨터 시스템의 동작 도중 예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받는 것 예외가 발생하는 원인 사용자의 잘못된 데이터 입력 잘못된 연산 개발자가 로직을 잘못 작성 하드웨

2023년 9월 6일
·
0개의 댓글
·
post-thumbnail

[Android/Error] Error inflating class ImageView

💌 [Android/Kotlin] Error inflating class ImageView 안드로이드 6 (API 수준 23) 기기에서 테스트를 하려고 빌드를 했는데 Exception 이 떴다. > Caused by: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class ImageView 에러난 이미지 파일이 drowable 폴더에 없고 drowable-v24 폴더에 있어서 그렇다.

2023년 9월 6일
·
0개의 댓글
·
post-thumbnail

Java 예외처리 & 입출력API

🤍예외처리 -예외처리를 하는 이유는 프로그램을 정상종료하기 위함이다. try-catch 예외 발생이 예상되는 부분에 처리하는 방법.   ArrayIndexOutOfBoundsException(배열길이오류)를 발생시켜 테스트한 코드이다. 예외발생이 예상되는 코드는 try 속에, 예외 발생 시 실행될 코드는 catch 속에 넣으면 된다.   정상 종료되는지 확인하기 위해 마지막에 "END" 메시지를 출력하도록 코드를 추가했다.   catch는 여러번 사용할 수 있는데 위의 예제처럼 아예 Exception 클래스를 사용할 수도 있고, finally라는 예약어를 사용하면 그 구현부는 예외가 있든 없든 항상 실행한다. throws 한 마디로 n개의 메서드를

2023년 9월 2일
·
0개의 댓글
·
post-thumbnail

[Exception] [JPA]HibernateException: identifier of an instance of com.mappingtest.Locker was altered from 1 to 2

발단 프로젝트를 진행하던 중, 궁금증이 생겼다. OneToOne 매핑관계에서 연관된 테이블 정보를 바꾸기 위해 setter를 사용한다면 손쉽게 수정 api를 구현할 수 있지 않을까? 결론부터 말하자면, 연관관계 매핑이 된 상태에서 식별자만을 단순 setter로 변경할 수 없다. 정확히 말하자면, setter로 변경하는 것은 단순히 Long 타입 id가 아니라 그 정보를 매핑하고 있는 객체 자체가 되어야 한다. 그렇지 않으면 다음같은 에러를 확인하게 된다. 의문점과 해결과정 다음 그림에서 보듯, PLANT_OBJ 엔티티와 LEAF 엔티티의 매핑 관계는 OneToOne이다. PLANT_OBJ의 leafId를 수정하고자 할 때, 단순히 클라

2023년 8월 29일
·
0개의 댓글
·
post-thumbnail

[에러] java.sql.SQLException: Cannot create PoolableConnectionFactory (로케일을 인식할 수 없습니다.)

분명 어노테이션, 매핑 등 전부 다 제대로 다 한 거 같음에도 계속 오류가 나서 미칠 지경이었다... 그러다 이것저것 시도하다보니 해결했다 처음에는 영문 에러에만 집중을 했는데 한참 있다가 저 뒤에 '(로케일을 인식할 수 없습니다)' 라는 걸 보고 혹시?! 하며 톰캣 VM 옵션에 아래 내용을 적어주었고 맥 '시스템 설정 - 언어 및 지역' 에서 지역을 다른 국가로 바꾼 뒤 다시 대한민국으로 해주었다 그랬더니 DB에 데이터도 잘 들어가고, 로그도 잘 찍힌다... > 오늘의 교

2023년 8월 27일
·
0개의 댓글
·
post-thumbnail

Exception 정리

1. Exception - 에러(Error) : 문법이나 메모리 사용 문제로 실행에 문제가 생겨 발생하는 오류 - 예외(Exception): 사용자의 오 조작이나 외부 문제로 발생하는 오류 Exception 예) - 예외는 또 일반 예외(Exception)와 실행 예외(Runtime Exception)로 분리 된다. - 일반 예외는 JVM 에서 필요하다고 판단하면 자동으로 예외처리를 해 준다. - 제일 중요한거는 NullPointException 꼭 알아두기 ![](https://velog.vel

2023년 8월 25일
·
0개의 댓글
·
post-thumbnail

[IT국비지원] 개발자 교육 22일 차 : JAVA(2023.08.25)fit.구디아카데미,김지훈 강사님

이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함! > String 관련 메서드들 재확인 및 추가 예시 진행 문자열(String)의 기능들 util.jsp My First Program Language is JAVA 에 대하여 utils 라는 경로에 action 속성의 값은 charAt, val 는 4 만약 EL 태그 charAt 이 null 이 아니면 "답 : ${charAt}"을 표시 이하 동일 controller ![](https://velog.velcdn

2023년 8월 25일
·
0개의 댓글
·

[Android] Coroutine을 위한 exceptionHandler 만들어보기

사연 viewModel에서 repository를 이용해 http 통신을 할때 에러 발생시 앱이 종료되는 현상이 발생해서 viewModelScope에서 예외 처리는 어떻게 하는지 찾아보게 되었음 해결 네트워크 에러를 처리할 data class를 선언해준다 BaseViewModel이라는 클래스를 하나 만들고 거기에 공통적으로 사용할 예외 핸들러를 등록해준다 해당 클래스를 상속받아서 사용하는 방법은 아래와 같다 그리고 fetchState를 관찰하면서 에러에 대응하면 되는데 아래와 같이 해보았다. fetchState를 관찰하고 있다가 뭔가 문제가 발생했을때 해당 fetchState의 값을 가져와서 적절하게 예외를 처리해준다. 이런 방식으로 하니 앱이 종료되지 않고 정상적으로 예외를 처리할 수 있었다

2023년 8월 23일
·
0개의 댓글
·
post-thumbnail

Spring Filter로 세션 페이징하기

토이 프로젝트에서 세션 로그인 인증을 통해 외부인이 접근할 경우 아래와 같은 오류 화면이 표시되는 서비스가 있습니다. 이 서비스 기능을 페이지 컨트롤러마다 코드를 추가하는 대신, 이를 한 곳에서 처리하기 위해 Filter를 도입해보았습니다. 밑의 코드는 세션에 있는 'account'와 'access'를 검증하여 커스텀 예외를 발생시키는 코드입니다. 필터 클래스 만들기 > 필터 (Filter) 서블릿으로 들어오는 요청과 서블릿에서 나가는 응답을 가로채서 조작하거나 처리하는 역할을 합니다. 세션으로 사용자 인증을 통해 예외를 발생시키는 필터를 만들어보겠습니다. 'PageRequestAuthFilter' 클래스를 생성하여 'OncePerRequestFilter'를 상속받아 줍니다

2023년 8월 21일
·
0개의 댓글
·
post-thumbnail

[Java] 예외처리 기본 처리 방법

🟫 Java의 Exception 자바에서 말하는 예외 처리란 프로그래머가 기대하고 작성한 기능대로 작동하지 않고 예상치 못하게 프로그램이 동작하는 것을 의미합니다. 자바는 예외가 발생하면 실행중이던 코드를 중단하고 해당 예외를 먼저 처리하게 됩니다. 이러한 예외들은 아주 다양하게 존재합니다. 아주 간단한 예시로 배열의 크기를 넘어가는 인덱스를 참조하거나(ArrayIndexOutOfBoundsException), 나누기를 할 때 0으로 나누는 경우 등이 있습니다(ArithmeticException). 이 외에도 수많은 예외가 존재하는데, 이러한 예외 클래스들은 공통적으로 최상위 부모로 (Object 클래스 제외) Throwable 이라는 클래스를 상속받고 있습니다. >#### <span style="color:#17b783"

2023년 8월 18일
·
0개의 댓글
·
post-thumbnail

[SpringBoot] Java 예외처리

1 Java 예외클래스 구조 > **Java 예외클래스의 최상위 → Object 모든 예외클래스 → Throwable 클래스 상속받음** 1️⃣ Errors 문제 발생 시, 복구 불가능 🚨 어플리케이션 자동종료 (Error의 경우, 복구시도 자체를 ⛔️) 메모리문제 (OutOfMemoryError) 스택크기문제 (StackOverFlowError) 2️⃣ Exception 모든 예외클래스들이 상속하는 클래스 RuntimeExceptions → UnCheckedException OtherExceptions → CheckedException 3️⃣ Exception 종류 |Exception|의미| |:---:|-

2023년 8월 16일
·
0개의 댓글
·
post-thumbnail

Exception 예외처리

Exception Exception handling (예외 처리) 에러와 예외 어떤 원인에 의해 오동작 하거나 비정상적으로 종료되는 경우 심각도에 따른 분류 Error 메모리 부족, stack overflow와 같이 일단 발생하면 복구할 수 없는 상황 프로그램의 비 정상적 종료를 막을 수 없음 → 디버깅 필요 Exception 읽으려는 파일이 없거나 네트워크 연결이 안 되는 등 수습될 수 있는 비교적 상태가 약한 것들 프로그램 코드에 의해 수습될 수 있는 상황 exception handling(예외 처리) 예외 발생 시 프로그램의 비 정상 종료를 막고 정상적인 실행 상태를 유지하는 것 예외의 감지 및 예외 발생 시 동작할 코드 작성 필요 예외 클래스의 계층 ![](https://velog.velcdn.com/images/d

2023년 8월 15일
·
0개의 댓글
·

[JAVA]예외처리(Exception handling)

프로그램 오류 종류 컴파일 에러(compile-time error) : 컴파일 할 때 발생하는 에러 런타임 에러(runtime error) : 실행 할 때 발생하는 에러 논리적 에러(logical error) : 작성 의도와 다르게 동작 자바 컴파일러 : 구문체크, 번역, 소스코드 최적화 Java의 런타임 에러 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 예외처리의 정의

2023년 8월 11일
·
0개의 댓글
·
post-thumbnail

스프링부트 커스텀 예외처리 메서드 추상화로 중복제거하기

문제 : 예외처리 메서드에서 반복이 너무 많다 서버를 개발하면서 에러가 발생하면 위처럼 각 커스텀 에러 클래스가 터질 때 마다 @RestControllerAdvice 클래스의 handle() 메서드로 잡는 방식으로 처리를 해주었다. 하지만 위처럼 만드니 반복되는 코드가 너무 많아져 고민이 되었고 어떻게 처리하면 좋을지 생각해보게 되었다. 해결 방법 1. 메서드 추출을 통한 에러처리 이런식으로 handle() 메서드 내부의 로직을 메서드 추출을 통해 호출하는 방식으로 바꾸어보았다. 하지만 아직도 여전히 여러개의 handle() 메서드가 존재하고 가독성이 좋지 못하다. 2. CustomException 부모 클래스 생성을 통한 HandlerMethod 추상화 2-1. 기존 코드 구조 우선 현재의 코드 구조는 이렇게 커스텀 에러를 정의하는 구조를 가지고 있고 각 커스텀 에러에 맞는 상태코드와 메시지를 정의해서

2023년 8월 10일
·
1개의 댓글
·
post-thumbnail

data school#5

today list 1.클래스 2.예외구문 3.텍스파일 다루기 (1)객체 > 변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조한다. > (예제) 국어,영어 수학 점수를 입력받아 리스트에 저장하고 원본을 유지한 상태로 복사본을 만들어 과목별 점수를 10%올렸을 경우에 평균을 출력 (2)얕은복사 깊은복사 > 1)얕은 복사 얕은 복사란, 객체 주소를 복사하는 것으로 객체 자체가 복사되지 않는다. > 2)깊은 복사 깊은 복사란, 객체 자체를 복사하는 것으로 또 하나의 객체가 만들어진다. (3)클래스 상속 > 1)상속이란 클래스는 또 다른 클래스를 상속해서 내 것처럼 사용할 수 있다. > (예제) 덧셈,뺄셈 기능이 있는 클래스를 만들고, 이를 상속하는 클래스를 만

2023년 8월 9일
·
1개의 댓글
·

Java Web, API Exception 처리 정리

들어가기 잘 만들어진 웹 서비스는 기술과 편의성도 중요하지만 버그 없이, 여러가지 예외상황에 맞춰 오류 처리를 잘 하는 것이 중요합니다. 예전에 한번 ErrorResolver에 대해서 포스팅을 했지만 이번에 김영한 선생님의 MVC 2 인강을 들으면서 알게된 내용을 정리해볼려고 합니다. Web Page Error화면 구현하기 1. Servlet 예외처리 Spring이 아닌 순수 Servlet Container에서는 어떻게 예외처리를 하는지 기초를 알아 봅시다. Exception (예외) response.sendError(HTTP 상태 코드, 오류 메시지) 기본적으로 다음과 같이 우리가 익히 알고 쓰는 throw Exception을 이용하거나 response.sendError()를 이용합니다. throw Exception 테스트를 해보기 전에 boot를 사용하고 계

2023년 8월 2일
·
0개의 댓글
·