예외처리
에러에 대한 처리를 할려고 한다.
- 예외처리(Exception)
-> 예외란 -> 예기치못한 상황
-> 수많은 오류들경험
-> 자바에서는 예외란 프로그램을 만든 프로그래머가 예상한 정상적인 처리에서 벗어나는 경우
에 이를 처리하기 위한 방법
-> 예측이 가능한 에러를 처리하는것
- 예외처리의 이유?
-> 비정상종료를 막고, 정상적인 실행상태를 유지하기 위해
-> 어떻게? -> 예외상황이 발생하면 그경우의 처리로직을 만듬
try ~ catch를 쓴다.
try{
에러가 예측이 되는 실행코드
}catch (Exception e) {
에러가 발생했을때 실행코드
}
=======================================================
int a=10;
int b=0;
try{
a/b;
}catch (Exception e) {
}
=====================================================
Exception은 하나의 클래스이고 에러에 대한 최고의 조상 클래스이다.
발생하는 메시지를 보여줘
System.out.println(e.getMessage()); //어떤 에러가 났는지 말해주는 것이다.
에러가 날경우 빨간줄 보면 첫줄뒤에 어떤에러인지 표시가 되어있는데 그걸 getMessage()라고
부르고 그거에대한게 나오는게 getMessage()이다.
===========================================================
try{
예외가 발생할 소지가 있는 실행코드
}catch (Exception e) {
예외가 발생한 경우 실행코드
}finally{
try를 하건 catch하건 무조건 수행
}
//finally는 무조건 수행된다.
finally를 쓰는 이유?
-> App은 DB랑 연동해서 사용한다.
-> 정상적으로 DB서버에 연결하고 사용하고있으면 마지막에 DB와의 연결을 끊어주는 역할
-> 비정상적으로 에러가발생한경우 이러한 경우에도 DB와의 연결을 끊어주기위해서 사용
예외의 종류
Exception 상속도.jpg사진 받기
상속도를 봤을때 제일 조상이 Throwable이다.
Throwable : 예외의 가장 큰 조상
-> 우리가 구현하지 않는다.
Error : 개발자가 소스코드로 해결할 수 없는 에러(시스템 에러)
-> 우리가 처리하지 않음
Exception : 개발자가 소스코드로 해결할 수 있는 에러(코드 에러)
그림을 보면 점선을 아래로
RuntimeException은 우리의 부주의이다.
RuntimeException : Exception의 자식, Unchecked Exception이다.
-> 주로 프로그래머의 부주의로 인한 버그가 많다.
-> 예외처리보다는 코드를 수정해야하는 경우가 많다.
1. ArithmeticException - 연산에 대한 에러
-> 0으로 나누는 경우
2. NullPointerException
-> 주소값을 할당하지 않고 참조형변수 호출한 경우
3. NegativeArraySizeException
-> 배열크기를 음수로 하거나 0으로 지정한 경우
4. ArrayIndexOutOfBoundException
-> 배열의 index번호 넘어서 호출한경우
int [] arr = new int [5];
arr[5]; -> 이런거 호출할때 발생하는 에러
=============================================================
=============================================================
package jongkyu.test;
import java.util.Scanner;
public class Exam {
Scanner sc = new Scanner(System.in);
public void main() {
while(true) {
System.out.print("첫번째 수 입력 : ");
int su1 = sc.nextInt();
System.out.print("두번째 수 입력 : ");
int su2 = sc.nextInt();
try {
//에러가 예측이 되는 코드
int result = su1/su2;
System.out.println("결과 : "+result);
System.out.println("감사합니다.");
} catch (Exception e) {//하나의 클래스이고 에러에 대한 최고의 조상클래스
// TODO: handle exception
System.out.println(e.getMessage());
System.out.println("0으로는 나눌수 없습니다.");
}
}
}
public void menuPrint() {
System.out.println("======== 메뉴 선택 ===========");
System.out.println("1. 반갑습니다. 출력");
System.out.println("2. 잘지내세요. 출력");
System.out.println("3. 또만나요. 출력");
System.out.print("입력 : ");
}
public void selPrint(int choice) {
switch(choice) {
case 1 : System.out.println("반갑습니다. "); break;
case 2 : System.out.println("잘지내세요. "); break;
case 3 : System.out.println("또 만나요"); break;
default : System.out.println("1~3에서 선택해주세요");
}
}
public void start() {
int choice = 0;
menuPrint();
try {
choice = sc.nextInt();
selPrint(choice);
} catch (Exception e) {
// TODO: handle exception
System.out.println("숫자를 입력해주세요");
}finally {
System.out.println("시스템을 종료합니다.");
}//무조건 수행된다.
//finally는 왜쓰냐면
}
}
'IT일반과목 > java' 카테고리의 다른 글
예외처리 5 student라는곳에 예외처리를 해서 만들어보기 (0) | 2018.07.31 |
---|---|
예외처리4 Exception 이랑 예외처리에 대해서 직접 메소드가 처리안할때 (0) | 2018.07.31 |
예외처리2 (0) | 2018.07.31 |
예외처리1 (0) | 2018.07.31 |
계산기 소스 (0) | 2018.07.31 |