클라이언트에서 위와 같은 에러가 날 수 있을때 원인으로 생각해 볼 수 있는 것은 보통 매핑된 url이 틀렸거나, 서버에서의 권한과 관련된 문제일 것이다. 문제가 되는 것이 오탈자가 아닌 경우일텐데, 나의 경우에는 spring security를 적용하고 webSecurityConfig에서 http.formLogin().loginPage("/api/members/login").permitAll(); 이라는 코드를 추가했었다. 이것이 원인이었는데 폼 로그인을 사용하지 않는데 이런 코드를 집어넣다보니 에러가 난 듯하다.
자바의 에러와 예외의 상속 계층도는 아래와 같다. 위에서 보면 알 수 있듯, 실행 예외 (RuntimeException)을 제외하고는 전부 Checked Exception이라고 되어있다. 앞서 설명한 적이 있는데, 이는 컴파일 시점에서 확인될 수 있는 예외라는 것이다. 만약 코드를 작성하다가 Checked Exception을 발생시키면 예외를 반드시 처리해야 한다. 위 코드에서 IOException은 Checked Execption이기 때문에 컴파일 단계에서 예외 확인이 된다. 위 코드를 컴파일 하려면 try-catch로 예외처리를 하거나 throws로 예외를 던져줘야 한다. 반면에 Runtime Exception은 unchecked Exception인 이유는 개발자가 작성한 코드가 실행될 때 발견되는 ..
throw throw 키워드를 사용해서 예외를 발생시킬 수도 있다. 아래 코드처럼 바보라는 값이 입력되었을때 예외를 발생시켜 어플리케이션을 중단 시킬 수 있다. output throws throws를 통해 메서드에 예외를 선언할 수 있다. 예외 떠넘기기로도 불리는데 이 키워드 자체는 예외처리와는 관련이 없고 throws로 예외가 선언된 메서드를 사용할 때, 사용자가 각자 알아서 예외를 처리해줘야 한다. 즉, 해당 메서드에서 예외를 처리하는 게 아니라 메서드를 사용하는 쪽이 예외를 처리하도록 떠넘기는 것이다. 아래 answerText 메서드를 보면 throws로 예외를 선언하기만 했다. 따로 해당 예외에 대한 처리는 하고있지 않다. 떠넘겨진 예외는 위에서 사용될 때 처리되고 있다.
Try - catch문의 흐름 아래와 같은 코드가 있다고 해 보자. 구조를 살펴보면, - try 블록에는 예외 발생 코드가 위치한다. - try블록의 코드가 예외 발생 없이 실행되면 catch 블록의 코드는 실행되지 않는다. - try블록의 코드에서 예외가 발생하면 catch블록으로 이동하여 예외 처리 코드를 실행한다. 위의 경우에는 아래처럼 될 것이다. (catch에서 return이 빠져있음 ㅠ) output 코드를 조금 변경해서 이렇게 바뀐다면? 이번에는 data들에 값을 지정해 줬는데, data1에는 숫자 String, data2에는 그냥 string을 줬다. 이렇게 되면 아래와 같은 흐름으로 진행될 것이다. data1은 parseInt로 int로 변환이 가능하지만, data2는 변환이 불가능하다...
에러와 예외 자바에서는 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 에러(Error)라고 한다. 에러는 다시 컴파일 에러와 런타임 에러로 나뉜다. 컴파일 에러는 말 그대로 컴파일 과정에서 나오는 에러 (코드짜다가 마주치는 빨간 밑줄) 런타임 에러는 실행 과정에서 일어나는 에러이다. 컴파일 에러는 자바 컴파일러가 문법 검사를 통해 오류를 잡아내 준다. 우리는 컴파일러가 알려주는 오류를 수정하기만 하면 된다. (김영한님도 가장 좋은 에러가 컴파일 에러라고 하셨다!) 컴파일이 잘 되더라도 실행하는 도중 (Runtime)에 에러가 발생할 수 있는데, 이를 런타임 에러라고 한다. 자바에서는 이 런타임 에러를 예외와 에러로 나누어 대응한다. 예외(Exception)란 사용자의..
public void memberExceptionHandler(HttpServletResponse response, String msg, int statusCode) { response.setStatus(statusCode); response.setContentType("application/json"); try { String json = new ObjectMapper().writeValueAsString(new SecurityExceptionDto(statusCode, msg)); response.getWriter().write(json); } catch (Exception e) { log.error(e.getMessage()); } } 위 코드를 작성하고 두 번 연속으로 요청을 보내니 java.la..
깃허브 액션에서 자동 배포를 위해 gradle.yml을 작성하던 도중 위 에러를 마주침. 나의 경우에는 gradlew 파일이 실행 권한이 없기 때문에 발생하였다. jdk 세팅 이후 이 코드가 들어가게 하였다. # build 권한 설정 - name: Grant execute permission for gradlew run: chmod +x gradlew 아니면 이 코드를 사용해도 된다 chmod 755 gradlew
먼저 배포를 위한 가이드를 보고싶은 분이시라면, 아래 블로그들을 참고해 주세요! 뱀귤님 블로그 https://bcp0109.tistory.com/363 연로그 https://yeonyeon.tistory.com/73 수바리의 코딩일기 https://suyeoniii.tistory.com/97 아래 내용은 제가 마주한 에러 기록용입니다 ///////////////////////////////////////////////////////////////////// 일단 큰 흐름은 이렇다! (순서대로 진행되지 않음) ec2에서 하기 작업을 진행해야함. Tag 추가 (CodeDeploy 에서 어떤 인스턴스에 실행할 지 구분하는 값) IAM 역할 등록 EC2 서버에 CodeDeploy Agent 설치 (이거 설치 빼..
https://kirinman.tistory.com/89 내용 정리!! 왜 클라이언트와 WAS 사이에 웹 서버를 두는 것일까 (리버스프록시 / 로드밸런싱) 미니프로젝트를 진행하다가 웹 시스템 구조를 아래 처럼 진행해야 할 것 같다는 이야기가 나왔다. flow를 제대로 그렸는지 모르겠다. 먼저 client에서 요청이 오면 웹 서버를 거치고 그 다음 WAS를 kirinman.tistory.com ============================= 실제로 활용해보지 않았기 때문에 아직은 잘 모르지만! 로드밸런싱이란 서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것을 의미한다.한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼..
드럽게 해메다 해결했다. 부디 누군가에게는 도움이 되기를!! 위 세 가지 에러를 단계별로 해결하자. Specify 'gradle-version' or 'gradle-executable' for projects without Gradle wrapper configured. - 깃허브 액션에서 스프링부트 프로젝트를 빌드할 때 gradle 버전이나 실행 파일이 설정되어 있지 않은 경우 발생한다. 해결을 위해 프로젝트의 Gradle 설정 파일(build.gradle 또는 settings.gradle)에서 Gradle 버전을 지정하거나, Gradle 실행 파일(gradlew 또는 gradlew.bat)을 지정해야 한다. gradle-wrapper.properties 파일에서 이렇게 버전을 지정해 주면 된다. di..
- Total
- Today
- Yesterday
- jmeter테스트
- bankersRounding
- 자바
- 항해
- Redisson
- pessimisticlock
- jmeter시나리오
- Lock
- 프로그래머스
- EC2
- Redis
- 토큰
- Spring
- jmeter쿠키
- 스프링faker
- index
- jmeter세션
- jmeter토큰
- 동적크롤링
- Python
- jwt
- 부하테스트시나리오
- 대규모더미데이터
- jmeter로그인
- hackerrank
- Java
- CorrectnessAndTheLoopInvariant
- CheckedException
- jmeter부하테스트
- 인덱스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |