Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- @RequestMapping
- AOP
- produces
- gradle
- frontController
- 비즈니스레이어
- 바인딩변수
- @
- 서비스레이어
- application.properties
- @ResponseBody
- 생성자주입
- jointpoint
- 의존주입
- springjdbc
- Model
- 어노테이션
- spring
- Java
- springmvc
- MVC
- @RequestParam
- c:if
- PointCut
- SpringBoot
- .xml
- 스프링
- 유효성검사
- after-throwing
- @Valid
Archives
- Today
- Total
메모장
예외 와 예외처리 본문
728x90
반응형
[ 예외와 예외처리 ]
try{
실행시 예외가 발생할수도있는 코드
예외가 발생되면, "즉시" catch문으로 이동함!
결제코드(); // 1.잔액부족 2.한도초과 3.카드점검기간 4.카드단말기
}
catch(예외클래스 e){
해당 예외클래스의 문제가 발생되면
이곳의 코드를 수행
// 결제된 곳까지의 돈을 다시 되돌려놓기 == rollback
}
finally{
예외발생여부와 무관하게 항상 수행되는 코드
// 통신을 위해 확보해둔 모든 연결스트림 해제
}
try 잘 들어가는 항목 : 결제코드(); // 1. 잔액부족, 2. 한도초과
3. 카드점검기간 4. 카드단말기
catch
// 결제된 곳까지의 돈을 다시 되돌려놓기 == rollback
finally{
// 통신을 위해 확보해둔 모든 연결스트림 해제(뭔가 열어놨으면 나중엔 닫아야 한다)
}
★★★★★예외처리하면 좋은점 ★★★★★★
: 프로그램이 비정상적으로 종료되는것을 막을수 있음 !
: 예외가 발생되면서 커질수 있는 피해들을 최소화 하는것이 목표 !
▶ catch 는 여러 catch들을 겹쳐 쓸 수 있는데 자기가 맞는 에러 문장을 실행
public class Test01 {
public static void main(String[] args) {
int a =10;
int b = 0; // 정수 / 정수 자체는 문제가 없음 !
try {
System.out.println("확인1");
System.out.println(a/b); // 실행을 하려고보니까, 0이었던것!
// 코딩자체에는 문제가없으나,
// "실행시" 발생하는 문제 == 예외
System.out.println("확인2");
}
catch(ArithmeticException e) {
System.out.println("확인3");
System.out.println(a/1);
System.out.println("확인4");
}
//if(예외가 발생했어 ?) {
//System.out.println(a/b); // 실행을 하려고 보니까 , 0이었던것!
//-> 그럼 1로 돌려줘 ,,
// 코딩자체에는 문제가 없으나,
// " 실행시 " 발생하는 문제 == 예외
}
}
public class Test02 {
public static void main(String[] args) {
int[] data = new int[3];
for (int i = 0; i < 3; i++) {
data[i]=i+1;
}
try {
System.out.println(data[3]); // 배열에 크기를 넘었다.
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("해당 인덱스는 없는 인덱스 입니다.");
}
finally { // 예외 발생여부와 무관하게 항상 수행된다 !!
System.out.println("예외 발생여부와 무관하게 항상 수행되는 코드 ");
}
}
< 실습 문제 >
[ 문제 ]
정수를 입력 10개가 될때 까지 계속
입력한 정수들을 모두 출력
[ 1, 3 ,-1, 0 , 10 ,....]
이중에서 0 이하인 정수들을 모두 제거
[1,3,10,...]
이중에서 가장 큰 정수가 저장된 인덱스 넘버 출력
[2]번
가장 큰 정수를 제외 하고 남은 정수들의 합과 평균 출력
☆ 어떤 컬렉션을 사용 해야 할까 ? 중복 없이 라는 말이 없음, 인덱스 넘버.. ArrayList 사용
한글 코딩시 어떤 제어문을 사용해야 할까 ?
사용자가 잘못된 입력을 하면 어떻게 해야 할까 ? try/catch
package class01;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) {
ArrayList<Integer> data=new ArrayList<Integer>();
Scanner sc=new Scanner(System.in);
final int CNT=3; // 개수를 고정 시킬때
while(data.size()<CNT){
int num; // ★ SCOPE 이슈
try {
System.out.print("정수입력) ");
num=sc.nextInt(); // 오류, 에러가 나는 부분
}
catch(InputMismatchException e) {
sc.nextLine();
System.out.println("정수를 제대로 입력해주세요!");
continue;
}
data.add(num);
}
System.out.println(data);
int i=0;
while(i<data.size()) { // 배열 크기 만큼
if(data.get(i)<=0) { // 0이하의 수는
data.remove(i); // 제거한다
continue;
}
i++;
}
System.out.println(data);
int maxIndex=0; // 최대값 인덱스 번호
int max=data.get(0); // 최대값
for(i=1;i<data.size();i++) {
if(data.get(i)>max) { // 인덱스번호의 값이 최대값보다 크다 ?
max=data.get(i); // 최대값을 바꿔줘
maxIndex=i; // 최대값 인덱스 번호도
}
}
System.out.println("최대값= "+max);
System.out.println("인덱스= "+maxIndex);
data.remove(maxIndex); // 최대값 인덱스 번호를 삭제 해줘
int sum=0; // 합계 구하기
for(int v:data) {
sum+=v;
}
double avg=sum*1.0/data.size(); // 평균 공식 써주기
System.out.println("총합= "+sum);
System.out.println("평균= "+avg);
}
}
}
}
728x90
반응형
'JAVA > 개념정리' 카테고리의 다른 글
| MVC 패턴 (0) | 2024.04.07 |
|---|---|
| 스레드(Thread) 와 파일 입출력 (1) | 2024.04.07 |
| 컬렉션 프레임 워크 (0) | 2024.04.06 |
| 객체배열 (1) | 2024.04.06 |
| (접근)제어자 (1) | 2024.04.06 |