프로젝트를 진행하던 중에 예외에 따라 응답값을 다르게 내려줘야 하는 상황이 생겼다. 기존에는 예외처리가 필요한 코드를 try-catch 문을 통해 일일히 처리했지만 @ControllerAdvice 를 이용하면 더 깔끔하게 예외를 처리할 수 있다고 한다. ControllerAdvice란? @Controller 혹은 @RestController 에서 발생한 예외를 한 곳에서 처리할 수 있도록 도와준다. 일반적인 API서버는 컨트롤러에서 Service 객체를 통해 비즈니스 로직을 처리하게 된다. 그리고 만약 비즈니스 로직 수행 중 예외가 발생할 경우 컨트롤러 단 까지 예외가 넘어오게 된다. @ControllerAdvice 는 이렇게 컨트롤러 단에서 발생한 예외들을 한 곳에서 처리할 수 있도록 도와준다. 이걸 ..
자바 예외와 예외 클래스 에러와 예외는 다르다. 에러(ERROR)는 JVM실행에 문제가 생겼다는 것으로 JVM 위에서 실행되는 프로그램을 아무리 잘 만들어도 결국 실행이 불가능하다. 이것은 개발자가 대처 가능한 문제가 아니다. 반면에 예외는 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램이 곧바로 중단되는 점에서는 에러와 동일하지만 예외는 예외처리(Exception Handling) 을 통해 프로그램을 종료하지 않고 실행상태를 유지시킬 수 있다. 예외에는 일반예외와 실행예외가 존재한다. 일반예외는 컴파일러 체크 예외라고도 한다. 자바소스를 컴파일 하는 과정에서 예외처리 코드가 필요한지 검사한다. 만약 예외처리 코드가 없다면 컴파일 오류가..
지난 포스팅에서 자바스크립트 예외처리를 다뤘다. 그러나 비동기 상황에서의 예외처리는 조금 다르다. 하나씩 살펴보자. Promise 다음과 같이 Promise를 리턴하는 비동기 함수가 존재한다. const sleep = function(sec){ return new Promise((resolve, reject) => { setTimeout(() => { reject('Error 발생') }, 1000 * sec) }) } sleep(3); 실행시켜봤을 때, catch되지 않은 에러가 있다고 나온다. 그럼 sleep의 사용을 try-catch 문으로 감싸보자. try { sleep(3); } catch (e) { console.log(e); } 결과는 똑같다. 그 이유는 뭘까? 비동기작업은 함수가 실행 될 ..
자바스크립트로 코드를 작성하다보면 예외사항을 처리해야 할 때가 있다. 예를들어, 덧셈 기능을 하는 함수에 매개변수로 문자열이 들어온다면 예외를 발생시켜야 한다. 자바스크립트는 문자 + 숫자 연산도 가능하기에 예외처리를 하지 않으면 끔찍한 결과가 나타날 수 있다. 3 + 5 = 8 이지만, '3' + 5 = 35 라는 결과가 나온다. 따라서, 예외적인 상황에서는 적절하게 예외를 발생시켜야 할 필요가 있다. 예외는 throw 를 통해 발생시킬 수 있다. 덧셈함수로 예시를 보자. function add(a, b){ if (typeof a !== 'number' || typeof b !== 'number') throw '매개변수가 잘못됐어..!' return a + b } 이런식으로 throw 를 통해 예외를 ..
- Total
- Today
- Yesterday
- boj
- 스레드
- 백준
- 구현
- Computer Architecture
- 컴퓨터 통신
- nestjs
- 예외처리
- 백트래킹
- nest.js
- node.js
- dfs
- 시뮬레이션
- nodeJS
- typeORM
- 동적계획법
- 벨만포드
- java
- ReactNative
- BFS
- 투포인터
- 세그먼트 트리
- 그래프
- 컴퓨터 구조
- 자바
- 자바스크립트
- 중앙대학교
- 재귀
- 그리디
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |