일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 숫자 형식
- 생성자
- 웹 브라우저 전쟁
- 크롤링 오류
- SQL
- html
- R1C3
- 페이지분석
- HTML역사
- 우아한테크
- Doit입문SQL
- 키-값 데이터베이스
- 자바 예외
- DoitSQL
- 배열 예제
- 배열 3요소
- 웹브라우저 수용도
- 크롤링
- 예외
- 데이터베이스
- 자바
- 예제
- 함수
- dbms
- DoitSQL입문
- DoIt
- 숫자형식오류
- SQL입문
- 함수 선언
- 자바 오류
Archives
- Today
- Total
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 숫자 형식
- 생성자
- 웹 브라우저 전쟁
- 크롤링 오류
- SQL
- html
- R1C3
- 페이지분석
- HTML역사
- 우아한테크
- Doit입문SQL
- 키-값 데이터베이스
- 자바 예외
- DoitSQL
- 배열 예제
- 배열 3요소
- 웹브라우저 수용도
- 크롤링
- 예외
- 데이터베이스
- 자바
- 예제
- 함수
- dbms
- DoitSQL입문
- DoIt
- 숫자형식오류
- SQL입문
- 함수 선언
- 자바 오류
Archives
- Today
- Total
프로그래밍
[자바 기초] day13 : 예외와 예외처리 본문
728x90
반응형
2023.05.19.금
예외와 예외처리
코드 자체는 문제가 없지만 실행시 발생하는 문제이다
선언 방법
try {
// 실행시 예외가 발생 가능한 코드
// 예외 발생 시 즉시 catch문으로 이동(return과 유사)
// ex. 결제코드
}
catch(예외클래스 e) {
//해당 예외클래스 문제 발생시
// 이곳의 코드 수행
// ex. 결제된 곳까지의 돈을 다시 되돌려놓기 == rollback
}
finally{
//예외발생여부 무관하게 수행되는 코드
// ex. 통신을 위해 확보해둔 연결스트림 해제
}
예외처리의 장점
- 비정상적 종료를 막을 수 있다
- 예외가 발생되면서 발생될 수 있는 피해들을 최소화할 수 있다
예외 클래스는 자바의 util에 존재하기 때문에 import가 필요하다
예제
package class01;
// [예외와 예외처리]
public class Test01 {
public static void main(String[] args) {
int a=10;
int b=0; // 정수/정수 자체는 문제없음 >실행하려고 보니까 0
try {
System.out.println(a/b);
}
catch(ArithmeticException e) {
System.out.println(a/1);
}
}
}
예제2)
package class01;
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]/data[0]);
}
catch(ArithmeticException e){
System.out.println("0으로는 나눌 수 없습니다");
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("해당 인덱스는 없는 인덱스입니다");
}
finally {
System.out.println("예외발생여부 무관하게 수행되는 코드");
}
}
}
예외
package class01;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// int 타입만 저장 가능
ArrayList<Integer> data = new ArrayList<>();
// 정상적입력 10번
final int CNT =10;
while (data.size() < CNT) {
int num;
try {
System.out.print("정수 입력: ");
num = sc.nextInt();
System.out.println("입력한 수: " + num);
} catch (InputMismatchException e) { // 얘네도 클래스 자바의 util에 존재 (임포트 필요)
sc.nextLine();// 버퍼에 남아있는 쓰레기 값 제거 코드
System.out.println("정수만 입력해주세요");
continue;
}
data.add(num);
}
// 입력한 정수들 출력
System.out.println(data);
// 0 이하 제거
int index = 0;
while (index < data.size()) {
if (data.get(index) <= 0) {
data.remove(index);
continue;
}
index++;
}
// 0 제거한 data 값 출력
System.out.println(data);
// 최대값 찾기, sum 구하기
int max = data.get(0);
int sum = 0;
int i =0;
index =0;
for (i = 0; i<data.size(); i++) {
if (data.get(i) > max) {
max = data.get(i);
index = i;
}
sum+=data.get(i);
}
System.out.println("가장 큰 정수가 입력된 인덱스: ["+index+"]번");
sum -=max; // 총 합에서 최대값 제거
double avg = (sum*1.0)/(data.size()-1); // 최대값 제거했기 때문에 개수-1
System.out.println("합: "+sum+" 평균: "+avg);
}
}
728x90
반응형
'자바 > 자바 기초' 카테고리의 다른 글
[자바 기초] day14 : 파일입출력 (0) | 2023.05.22 |
---|---|
[자바 기초] day14 : 스레드(Tread) (0) | 2023.05.22 |
[자바 기초] day12 : 컬렉션 프레임워크 (0) | 2023.05.19 |
[자바 기초] day11 : 추상화/ 캡슐화 예제 (0) | 2023.05.18 |
[자바 기초] day11 : 추상화(abstract) (0) | 2023.05.18 |
Comments