Sinbum's blog
  • 인셉션 개발자
    • History
    • Editorial Board
    • 세미나
      • MS_빅데이터_분석_교육
      • Databricks_Musinsa_사례분석
      • Databricks_AMOREPACIFIC_사례분석
    • 개발자 꿀팁
  • 리눅스
    • 리눅스 기초
      • 기본명령어
      • 프록시서버
      • 온프레미스
      • systemd
      • 우분투 앱
      • vi 사용법
    • 도커
      • MSA 아키텍처
      • 도커 설명
      • 도커 설치
      • 도커 가이드
        • 컨테이너 만들기
        • 컨테이너 보관
        • 컨테이너 사용
        • 컨테이너 관리
        • 컨테이너 볼륨
        • 컨테이너 통신
        • 도커 연습
  • 언어
    • 자바
      • 자바(JAVA)는 무엇인가?
        • JVM 메모리
      • 자바 설치 가이드
      • 자바 언어 활용
        • 변수
        • static
        • 상수
        • 연산자
        • 제어문
        • 배열
        • CLI-자바사용
        • 클래스
        • 메소드
        • 값에의한 호출
        • GUI 프레임
        • 생성자
        • 오버로딩
        • 상속
        • 상속생성자
        • 접근제한자 와 가비지 컬렉션
        • 추상클래스 와 인터페이스
        • 다중구현
        • 예외처리
        • 컬렉션 프레임워크
        • 쓰레드
        • 네트워크
        • 다중 접속 서버 구현
      • 간단한 채팅 앱 개발하기
    • 파이썬
      • 파이썬(Python)은 무엇인가?
      • 파이썬 설치 가이드
      • 파이썬 언어 활용
        • 변수
        • 입력,출력
        • 타입선언
        • 자료구조
        • 주석처리
        • 문자열
        • 리스트
        • 반복문
        • 연산자
        • 조건문
        • 정규표현식
          • re 모듈
          • 메타문자1
          • 메타문자2
          • 그루핑
          • 전방탐색
          • 문자열 바꾸기
          • Greedy 와 Non-Greedy
      • 마치며...
  • 형상관리,CI/CD
    • 깃허브
      • 깃허브 협업 모델
      • 깃허브 설치 와 ssl
      • 깃허브를 잘쓰는 팁 모음
  • BigData
    • BigData 개념
      • OLTP,OLAP
      • ELT,ETL
      • DW
      • ObjectStorage
      • LambdaArc
      • OGG
    • Kafka
      • 환경설정 및 소스코드 다운로드
      • 아파치 카프카는?
        • 카프카의 시작
        • 카프카 특성
        • 빅데이터 아키텍처
      • 카프카 기초 개념
    • BuildApplications
      • Airflow
      • Grafana
    • PowerBi
      • DAX
        • REMOVEFILTERS
        • DAX_문법
        • DAX_함수
    • Azure
      • SynapseAnalytics
  • IOT
    • 아두이노
      • 설치 및 기초
      • 센서의 종류
      • led 출력하기
      • 시리얼 통신
      • 무선 통신
  • About
    • SINBUM
    • INTEREST
    • PROJECTS
      • 업무 프로젝트
      • 개인 프로젝트
        • 티스토리API를 사용한 블로그 앱
        • 노션 API와 블로그 연동 자동화 하기
        • 로지텍 마우스 수리
    • CONTACT
Powered by GitBook
On this page
  1. 언어
  2. 자바
  3. 자바 언어 활용

예외처리

  • 예외는 프로그램 개발시에 발생하는 에러와 다릅니다.

  • 프로그램 개발시에 발생하는 에러는 전부 수정해야 합니다.

  • 안정적으로 컴파일된 후 운영중에 발생하는 에러는 대부분 "예외"인 경우가 많습니다. 예외는 코드상에서 발생하는 에러하고는 다르며 컴파일시에는 에러가 발생하지 않습니다. 마치 디스켓을 읽어오는 프로그램이 있다면 디스켓이 없는 상태에서 읽기 기능을 작동하여 발생하는 에러와 같은 것입니다.

  • 예외 처리를 하면 예외가 발생되서 프로그램이 끝나는 것이 아니라 나머지 루틴이 정상적으로 실행이 됩니다.

  • 자바는 객체지향 언어임으로 예외 메시지도 객체지향적으로 처리합니다.

자바 코드 try,catch문 예제코드

try{

   //에러가 발생할 소지가 있는 코드를 개발자가 선별하여 지정해야 하며 "IO, DBMS, NETWORK"관련 코드가 대부분입니다.

}catch(Exception e){

   //예외처리 및 예외처리 원인 출력
   System.out.println(e.toString());

}finally{

   //무조건 실행되는 코드 블럭, 데이터베이스 연결 종료 등

}

Ex1.java - ERROR 발생

class Ex1 {
public static void main(String args[]) {

  int a = 10;
  int b = 0;
  /*
  if (b == 0){
      System.out.println("0으로 나눌수 없습니다.");
      System.exit(0);
  }
   */

  System.out.println(" a = " + a + " b = " + b );
  System.out.println(" a/b = " + (a/b) );
  System.out.println("나눗셈이 수행되었습니다.");


}
}

Ex2.java - 예외를 처리한 경우

class Ex2 {
public static void main(String args[]) {

  System.out.println("매개변수로 받은 두 개의 값");
  int a = 10;    // 문자열 값을 정수로 변환
  int b = 0;

  System.out.println(" a = " + a + " b = " + b );

  try{
      System.out.println(" a를 b로 나눈 몫 = " + (a/b) );
  }catch(Exception e){
      System.out.println("[경고]예외발생:" + e.toString());
  }finally{
      System.out.println("나눗셈 연산이 종료 되었습니다.");
  }

  System.out.println("나머지 루틴을 정상적으로 실행합니다.");

}
}

예외 선언

예외의 선언은 처음에는 좁은 범위를 잡고 다음으로 내려갈수록 넓은 범위의 예외를 아래처럼 명시합니다.

  • 예외의 파악이 불분명한경우 Exception 클래스로 받습니다.

   java.lang.Object
   |
   +--java.lang.Throwable
   |
   +--java.lang.Exception                                 <--- 가장 넓은 범위
   |
   +--java.lang.RuntimeException
   |
   +--java.lang.IllegalArgumentException
   |
   +--java.lang.NumberFormatException   <--- 가장 좁은 범위, 여기부터 catch문에 명시

ExceptionError1.java

class ExceptionError1 {
   public static void main(String args[]) {
   
      try {
      System.out.println("매개변수로 받은 두 개의 값");
      int a = Integer.parseInt(args[0]);    // 문자열 값을 정수로 변환
      int b = Integer.parseInt(args[1]);
      System.out.println(" a = " + a + " b = " + b );
      System.out.println(" a를 b로 나눈 몫 = " + (a/b) );
      System.out.println("나눗셈이 원할히 수행되었습니다.");
      }
      catch(ArithmeticException e) {
      System.out.println("==================================");
      System.out.println("ArithmeticException 처리 루틴 : ");
      System.out.println(e + " 예외 발생");
      }
      catch(ArrayIndexOutOfBoundsException e) {
      System.out.println("==================================");
      System.out.println("ArrayIndexOutOfBoundsException 처리 루틴");
      System.out.println(e + " 예외 발생");
      }
      catch(NumberFormatException e) {
      System.out.println("==================================");
      System.out.println("NumberFormatException 처리 루틴");
      System.out.println(e + " 예외 발생");
      }
      catch(Exception e) {
      System.out.println("==================================");
      System.out.println("알수없는 문제가 발생했습니다.");
      System.out.println(e.toString());
      }
      finally {
      System.out.println("==================================");
      System.out.println("예외 처리를 끝내고 finally 블럭을 수행합니다");
      }
   System.out.println("나머지 모듈 정상 작동!!!");
   }
}
Previous다중구현Next컬렉션 프레임워크

Last updated 2 years ago