+ 00 00 0000

Have any Questions?

15_Simple Coding – Java – 예외처리 – 기본 요약

15_Simple Coding – Java – 예외처리 – 기본 요약

📃 요약

자바는 웹 프로그램을 개발하는데 특화된 컴파일 언어이자 벡엔드 개발 전문 언어임. 플랫폼에 독립적이라서 어떤 운영체제(OS)에서도 실행이 가능하며 가상머신을 통해 실행됨

요소 기술 :

Basic : 자바

📃 기술 구현

스펙 :

 intellij
 java

📃 예외처리

자바에서 에러는 예외라고 함, 예외(에러)가 발생했을 때 처리하는 방법을 제시함

1) 예외 처리 :


  • 예외 처리 : 에러를 처리하는 방법을 말함



  • 프로그램에서 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 것을 말함



  • 대표적인 Null 포인터 예외 예제
    NullApplication.java


    public class NullApplication {
    public static void main(String[] args) {
    String data = null;
    // 변수 값이 null이면 속성이나 함수를 부를 수 없음
    // 예외 : 널포인터입셉션
    System.out.println(data.toString()); // 에러(=예외) 발생
    }
    }

2) try-catch-finally 블록 :

  • 생성자 내부와 함수 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처릴를 할 수 있도록 해줌
    - try     : 실행문 감시
    - catch : try 로 감싸진 코드에 에러가 발생하면 catch 블럭으로 강제 이동시킴, 에러메세지 출력 등의 작업을 함
    - finally : 에러 발생 유무와 관계없이 마지막에 무조건으로 실행되는 블럭

CatchApplication.java

public class CatchApplication {
    public static void main(String[] args) {
        try {
//            값이 없음 : 에러(예외) 발생
//            아래 라인이 실행되지 않고, catch 블럭 감
            String data1 = args[0];
            String data2 = args[1];

            int value1 = Integer.parseInt(data1); // 값 없음 에러(예외) 발생
//      NumberFormatException : 숫자로 바꿀수 없는 값을 강제 변환할경우 발생
            int value2 = Integer.parseInt(data2); // 값 없음 에러(예외) 발생

            int result = value1 + value2;
            System.out.println(data1 + " + " + data2 + " = " + result);
        } catch(Exception e) {
            System.out.println("실행 매개변수의 수가 부족합니다.");
        } finally {
            System.out.println("다시 실행하세요");
        }
    }
}

3) 다중 catch 블록 :

  • catch 블록이 여러 개라 할지라도 단 하나의 catch 블록만 실행됨
    - try     : 실행문 감시
    - catch : try 로 감싸진 코드에 에러가 발생하면 catch 블럭으로 강제 이동시킴, 에러메세지 출력 등의 작업을 함
    catch 블럭은 여러개를 작성할 수 도 있음
    - finally : 에러 발생 유무와 관계없이 마지막에 무조건으로 실행되는 블럭

CatchByCatchApplication.java

public class CatchByCatchApplication {
    public static void main(String[] args) {
        try {
//            값이 없음 : 에러(예외) 발생
//            아래 라인이 실행되지 않고, catch 블럭 감
            String data1 = args[0];
            String data2 = args[1];

            int value1 = Integer.parseInt(data1); // 값 없음 에러(예외) 발생
//      NumberFormatException : 숫자로 바꿀수 없는 값을 강제 변환할경우 발생
            int value2 = Integer.parseInt(data2); // 값 없음 에러(예외) 발생

            int result = value1 + value2;
            System.out.println(data1 + " + " + data2 + " = " + result);
        } catch(ArrayIndexOutOfBoundsException e) {
            System.out.println("실행 매개변수의 수가 부족합니다.");
        } catch(NumberFormatException e) {
            System.out.println("숫자로 변환할 수 없습니다.");
        } finally {
            System.out.println("다시 실행하세요");
        }
    }
}

4) throws 키워드 :


  • 함수 선언부 끝에 작성되어 함수에서 처리하지 않은 예외를 함수를 호출한 곳에서 try/catch 구문을 사용해게끔 넘기는 역할


    1) throws 키워드가 있는 클래스는 예외처리를 하지 않아도 됨
    2) 그 함수를 호출하는 곳은 try/catch 구문을 사용해서 예외처리를 해야함

ThrowsApplication.java

public class ThrowsApplication {
    public static void main(String[] args) {
//        throws가 붙은 함수를 호출할 경우 반드시 예외처리 해야함
        try {
            findClass();
        } catch (ClassNotFoundException e) {
            System.out.println("클래스가 존재하지 않습니다.");
        }
//        findClass(); // 불가
    }
//    공유 함수
//    throws : 함수의 끝에 붙는 키워드로 자신을 호출하는 쪽에서 try~catch 예외처리를 하라고 떠넘기기
    public static void findClass() throws ClassNotFoundException {
        Class clazz = Class.forName("java.lang.String2");
    }
}

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다