열심히 끝까지
[예외발생노트] - 예외 발생 시 매번 생성 본문
--------------------------------------------------22.6.8(수요일)
Exception int thread "main" java.util.InputMismatchException
: 문자열에 사이띄우기를 하면서 입력하면 입력되지 못한 나머지 문자값과 엔터가 정수에 입력되어
올바르지 않은 입력값이라는 예외 출력
------------------------------------------------22.6.10(금요일)
------------------------------------------------22.6.13(월요일)
------------------------------------------------22.6.14(화요일)
Exception in thread "main" java.lang.StackOverFlowError
: 최소값을 지정해주지 않아 음수가 되도 끝나지 않아 메모리 오버플로우 발생
------------------------------------------------22.6.24(금요일)
package class02;
public class Test02 {
public static void main(String[] args) {
int[] data = {1, 2, 3};
System.out.println(data[3]);
}
}
java.lang.ArrayIndexOutOfBoundsException : Index 3 out of bounds for length 3
>> 올바르지 않은 길이값을 호출해서 나온 결과
package class02;
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
int[] data = {1, 2, 3};
Scanner sc = new Scanner(System.in);
System.out.print("인덱스 넘버 입력) ");
int num = sc.nextInt();
try {
System.out.println("AAA");
// 예외가 발생할만한 구간을 설정
System.out.println(data[num]);
// 예외는 발생 즉시 try -> catch로 즉시 이동!
System.out.println("BBB");
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("0이상 "+data.length + "미만 까지만 입력해주세요!");
// 예외처리는
// 1. 무슨 에러였는지(개발자)
// 2. 어떻게 해야하는지(사용자)
e.printStackTrace(); // 메서드를 통해서 어떤 에러였는지 알려준다!
}
}
}
package class02;
import java.util.Scanner;
public class Test03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
try {
System.out.println(a/b);
}
catch(ArithmeticException e) { // 예외에 맞게 예외처리를 해야한다!
System.out.println("0으로는 나눌 수 없습니다!");
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("인덱스넘버를 다시 확인해보세요.");
}
System.out.println("프로그램...");
}
}
Exception in thread "main" java.lang.ArithmeticException : / by zero
예외처리를 하지 않은 채 0으로 나누려고 하면 에러가 걸림
------------------------------------------------22.7.4(월요일)
ORA-00907 : missing right parenthesis
: 오타 중 하나
-----------------------------------------------22.8.1(월요일)
해결책------
(36일차에도 쓰지만 여기에도 기재할 것)
>> GET 으로 바꾸면 겹치기 때문에 올바른 것을 만나기 힘듦
-----------------------------------------------22.8.2(화요일)
org.apache.jasper.JasperException
>> 애초에 에러를 발생시키기 위해 만든 페이지
-----------------------------------------------22.8.20(토요일)
Several ports(8005, 8088) required by Tomcat v9.0 Server at localhost are already in use.
The server may already be running in another process, or a system process may be using the port.
To start this server you will need to stop the other process or change the port number(s).
>> 프로그램이 강제종료되서 포트번호가 계속 살아있는 상황
>> 이 때, cmd 켜서
1. netstat -a -n -o -p tcp 실행
2. 포트 번호 찾아서 그 포트번호 kill
> taskkill /f /pid 포트번호
3. 그러고 실행!
-----------------------------------------------22.9.14(수요일)
SQLSyntaxErrorException : ORA-00904: "WIRTER" : invalid identifier
: WRITER 오타 냄
-----------------------------------------------22.9.15(목요일)
applicationContext.xml의 printLog 오타
>> printlog로 작성했었음
-----------------------------------------------22.9.21(수요일)
>>> Servlet.init() 호출 예외
javax.servlet.ServletException: 서블릿 [DispatcherServlet]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다.
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1787)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:834)
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Cannot map handler 'mypageController' to URL path [/mypage.do]: There is already handler of type [class com.ryo.biz.controller.MemberController] mapped.
java.lang.IllegalStateException: Cannot map handler 'mypageController' to URL path [/mypage.do]: There is already handler of type [class com.ryo.biz.controller.MemberController] mapped
>> 에러의 이유는 중복으로 설정한 mypage.do 때문
package com.ryo.biz.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;
import com.ryo.biz.member.MemberVO;
import com.ryo.biz.member.impl.MemberDAO;
@Controller
public class MypageController /*implements Controller */{
@RequestMapping("/mypage.do")
public ModelAndView handleRequest(MemberVO mVO, MemberDAO mDAO, ModelAndView mav) {
mVO = mDAO.selectOneMember(mVO);
mav.addObject("member", mVO);
mav.setViewName("mypage.jsp");
return mav;
}
}
이 사항을 memberController에서 또 지정해줘서 충돌난 것
@RequestMapping("/mypage.do")
public ModelAndView mypage(MemberVO mVO, MemberDAO mDAO, ModelAndView mav) {
mVO = mDAO.selectOneMember(mVO);
mav.addObject("member", mVO);
mav.setViewName("mypage.jsp");
return mav;
}
-- MypageController의 RequestMapping을 지워주면 해결
-----------------------------------------------22.9.26(월요일)
>> Could not publish server configuration for Tomcat v9.0 Server at localhost.
Multiple Contexts have a path of "/app"
>>>> Servers > server.xml
// 여기서 잘못된 것
<Context docBase="test2" path="/" reloadable="true" source="org.eclipse.jst.jee.server:test2"/>
<Context docBase="test" path="/app" reloadable="true" source="org.eclipse.jst.jee.server:test"/></Host>
Path 파일 확인해볼 것!! Path = "/" 으로 설정할 것
-----------------------------------------------22.9.28(수요일)
Incorrect result size: expected 1, actual 0
>> queryForObject() 메서드는 무조건 1개의 output을 필요로 하는데
output값을 받지 못하거나 너무 많이 받아서 발생한 일
1. try/catch로 잡기
2. query()로 변경해서 해결
자세한 사항은 [코딩 문제 - jdbcTemplate.queryForObject() 관련 문제] 에 기제
-----------------------------------------------22.9.29(목요일)
javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'message.sign.h2' for locale 'ko_KR'.
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:657)
org.apache.jsp.signin_jsp._jspService(signin_jsp.java:259)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
근본 원인 (root cause)
javax.servlet.jsp.JspTagException: No message found under code 'message.sign.h2' for locale 'ko_KR'.
org.springframework.web.servlet.tags.MessageTag.doEndTag(MessageTag.java:200)
org.apache.jsp.signin_jsp._jspx_meth_spring_005fmessage_005f0(signin_jsp.java:282)
org.apache.jsp.signin_jsp._jspService(signin_jsp.java:165)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
>> 언어 처리(다국어 처리)는 DispatcherServlet-servlet.xml를 거쳐서 진행
그렇기에 insert.do 혹은 main.do, signup.do 와 같이 xxx.do로 끝나면 다국어처리가 가능
>>> 하지만 insert.jsp와 같이 다이렉트로 이동하려고 하면 적용되지 않고 에러를 띄움
>> 그렇기에 다이렉트로 이동하는지, 아니면 DispatcherSerlvet의 do를 통해 진행되는지 확인할 것
'디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(과제)' 카테고리의 다른 글
[코딩 문제] - 9/27 발견한 jdbcTemplate.queryForObject() 관련 문제 : Incorrect result size: expected 1, actual 0 (0) | 2022.09.28 |
---|---|
[코딩 과제] - 9/27 강사님 문제 - 사진 업로드 + 미리보기(추가사항) (0) | 2022.09.28 |
[코딩 과제] - 9/26 강사님 문제 : 검색 기능 + DAO2 적용 (0) | 2022.09.27 |
[코딩 과제] - 9/14 강사님 문제 (0) | 2022.09.14 |
[코딩 과제] - 9/13 강사님 문제 (1) | 2022.09.14 |