묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 1편
서로를 참조하고 있는 클래스의 예외던지기에 관해
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요강의를 듣다가 궁금한 점이 생겼습니다.예외처리 방법 중에 2번째 방법인 예외를 상위로 던지는 방법이 있다고 하셨는데, 만약에 서로를 참조하고 있는 클래스가 있다고 가정을 하고 이 때, 각각의 클래스안에 상대의 객체를 생성해서 상대의 클래스로 예외를 던지면 stack overflow 오류가 발생함을 확인하였습니다. 이 경우 다소 인위적으로 상위 클래스로 예외를 던져지지 못하였는데, 혹시 실무에서도 예외를 상위 클래스로 던지지 못하여 stack overflow error가 발생하는 사례가 있는지 궁금합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
예외 처리 질문드립니다.
[질문 내용]안녕하세요 해당 강의에서 LoginCheckFilter 구현 중에 try - catch 코드에서 질문이 있어서 글을 남깁니다. catch (Exception e) { throw e; // 예외 로깅 가능하지만 , 톰캣까지 예외를 보내주어야 함.}부분이 이해가 가질 않습니다. 톰캣까지 예외를 보내줘야하는 이유를 모르겠네요. 그리고 try 구문 내에서 return으로 다음을 진행하지 않고 끝을 내는 부분도 잘 와닿지 않습니다.제가 예외 처리 부분 개념이 약한 거 같은데, 위에 질문 드린 내용들을 뭐라고 검색하고 공부하면 좋을까요?
-
해결됨
예외처리가 더 효율적인 코드
유저 로그인 관련 메서드를 구현하던 중, 예외처리 방법 두가지 중 어느 것이 더 효율적(가독성, 유지보수 측면 등등..)인지 여쭤보고 싶습니다첫번째 방법: try문에 NotFoundException을 던지고, catch문에서 instanceof를 사용해서 예외의 타입을 확인하고 처리하기async userLogin(nickname: string, password: string) { try { const user = await this.usersRepository.findOne({ where: { nickname } }); // console.log(user) if (user && (await bcrypt.compare(password, user.password))) { return user; } else { throw new NotFoundException('아이디 또는 비밀번호가 일치하지 않습니다.'); } } catch (e) { console.error(e); if (e instanceof NotFoundException) { throw e; // NotFoundException은 그대로 던지기 } else { throw new InternalServerErrorException('알 수 없는 오류'); } } } 두번째 방법: try문에서는 일반적인 Error객체를 던진 후 catch문에서 error.message를 확인하여 예외 유형을 판단하기 async userLogin(nickname: string, password: string) { try { const user = await this.usersRepository.findOne({ where: { nickname } }); // console.log(user) if (user && (await bcrypt.compare(password, user.password))) { return user; } else { throw new Error('아이디 또는 비밀번호가 일치하지 않습니다.'); } } catch (error) { if (error.message === '아이디 또는 비밀번호가 일치하지 않습니다.') { throw new NotFoundException('아이디 또는 비밀번호가 일치하지 않습니다.'); } else { // 다른 예외 처리 throw new InternalServerErrorException('알 수 없는 오류'); } } }
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
안녕하세요! 예외처리 관련해서 질문드립니다!
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다. 안녕하세요. exception filter는 에러가 controller까지 전달이 되어야지 동작한다고 해주셨는데요! 일반적인 서비스 레이어의 코드라면 service 레이어에서 throw 한 에러가 controller까지 전달이 될 것 같은데요! trasaction 사용을 위해서 try / catch 문을 사용할 시 catch에서 잡힌 에러가 controller로 전달되지 않는 것을 확인했습니다! 이럴 경우에는 catch 에서 잡힌 에러를 그대로 다시 controller로 throw해주는 것이 괜찮은 방법인지 고민이 들어서 질문드립니다! 아래와 같이 처리하는 방법이 맞는지 혹은 조금 더 좋은 방법이 있는지 궁금합니다!example.service.tsasync testService() { const queryRunner = this.connection.createQueryRunner() .. 트랜잭션 스타트 try { ... 중략 } catch(error) { await queryRunner.rollback() throw error } }
-
해결됨[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
ResponseEntityExceptionHandler에 대한 질문입니다.
안녕하세요 강사님 스프링 부트 강좌 잘 듣고 있습니다. 질문드리고 싶은 것이 컨트롤러에 대한 공통 예외처리는 @ControllerAdvice에서만 붙이면 처리가능하다고 알고 있었는데... ResponseEntityExceptionHandler에 대해 검색해 본결과 스프링 부트에서 미리 정의된 특정 예외에 대한 처리는 ResponseEntityExceptionHandler 가 대신 해주기 위해서라는데 그런 부분 때문에 상속받으신 것인지... 제가 이해한 부분이 맞는지 문의드리겠습니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ExceptionHandler 질문!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서 다음과 같은 코드를 설명해 주셨습니다. @ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(IllegalArgumentException.class)public ErrorResult illegalExHandler(IllegalArgumentException e){ log.error("[exceptionHandler] ex", e); return new ErrorResult("BAD", e.getMessage());} 여기서 IllegalArgumentException 또는 이를 상속한 자식의 예외가 발생했을때, 등록된 @ExceptionHandler를 통해 위의 핸들러로 예외가 처리되고, WAS 에게는 정상 응답후 끝난다고 하셨습니다. 즉, 이전처럼 WAS에서 다시 서블릿으로 예외를 처리할 컨트롤를 호출하지 않는다 하셨습니다. 이는 HandlerExceptionResolver 활용 에서 알려주셨던 내용입니다. 하지만 의문이 있는데, 위 코드에서는 @ResponseStatus가 추가되어 있습니다. @ResponseStatus는 내부적으로 response.sendError(statusCode, resolvedReason); 를 통해 response 내부에 오류가 발생했었음을 상태로 저장하게 됩니다.(이전 강의에서 알려주셨던 내용) 이후 이를 WAS가 인지하게 되어 기본 에러 페이지인 "/error"로 재요청을 보내야 하는것 아닌가요? 스프링 부트는 response.sendError(...) 가 호출되면 모든 오류는 "/error" 를 호출하게 된다. 라고 알려주신게 생각납니다! 이부분이 어떻게 처리되는 것 인가요?? 조금만 더 알려주시면 감사하겠습니다!!
-
미해결스프링 핵심 원리 - 기본편
테스트코드와 예외처리는 어떤 강의에서 볼 수 있을까요?
안녕하세요 좋은 강의 정말 감사합니다 실무에서 스프링 사용하면서 더 깊이있게 개발하려다보니 원리가 중요해서 이 강의를 제일 먼저 들었는데 정말 도움이 많이 되었습니다 저도 학자형으로 공부하는 편인데 일을 하다보니 야생형으로 변하게 되더라구요 그래서 야생형적으로 여쭤보면 당장 테스트코드 (유닛테스트, 통합테스트, mock 등등)와 예외처리의 best practice가 궁금합니다 팀장님 강의에 여러군데에서 조금씩 보이긴 해서 일부분 발췌해서 듣긴했는데 혹시 어떤 강의에 잘 되어있을까요?? 다시 한번 좋은 강의 감사합니다 활용편1 들으러 가보겠습니다
-
미해결업무 자동화를 위한 파이썬 pyautogui, beautifulsoup 크롤링 기초
.text 사용 시 값이 비어있는 칸은 nonetype이 들어가서 에러가 발생하는데 예외처리를 어떻게 해야하나요 ?
.text 사용 시 값이 비어있는 칸은 nonetype이 들어가서 에러가 발생하는데 예외처리를 어떻게 해야하나요 ?