4. 프로그래밍 언어 활용 - 프로그래밍 언어 활용(라이브러리, 예외 처리)

145. 라이브러리

: 효율적인 프로그램 개발을 위해 자주 이용되는 함수나 데이터들을 미리 만들어 모아 놓은 집합체

  • 반복적인 코드 작성을 피하기 위해 만들어진 것으로 필요할 때 호출하여 사용
  • 일반적으로 도움말, 설치 파일, 샘플 코드 등을 제공
  • 형태
    • 모듈 형태 : 기능이 하나의 파일로 구현된 형태
    • 패키지 형태 : 한 패키지 폴더 내에 여러 개의 모듈을 모아 놓은 형태

 

- 라이브러리의 종류

  • 표준 라이브러리 : 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리
  • 외부 라이브러리 : 개발자들이 특정 기능을 만들어 인터넷 등으로 공유해 놓은 라이브러리, 설치한 후 이용

 

1) C 언어의 대표적인 표준 라이브러리

: C에서는 라이브러리를 헤더 파일로 제공하며 include 문을 통해 선언하여 사용

ex) #include <stdio.h>

 

  • stdio.h : 데이터 입출력에 사용되는 기능 제공
    • ex) printf, scanf, fprintf, fscanf, fopen, fclose, etc.
  • math.h : 수학 함수 제공
    • ex) sqrt, pow, abs, etc.
  • string.h : 문자열 처리에 사용되는 기능 제공
    • ex) strlen, strcpy, strcmp, etc.
  • stdlib.h : 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능 제공
    • ex) atoi, atof, srand, rand, malloc, free, etc.
  • time.h : 시간 처리에 사용되는 기능 제공
    • ex) time, clock, etc.

 

2) Java의 대표적인 표준 라이브러리

: Java는 라이브러리를 패키지에 포함하여 제공하며 각 패키지는 import 문을 통해 선언하여 사용

  • 선언한 패키지 내 클래스의 메소드는 클래스_이름.메소드_이름() 형식으로 마침표로 구분해 사용

ex) import java.util.Scanner, import java.util.* (선언)    Math.random() (사용) 

    

  • java.lang : Java에 기본적으로 필요한 인터페이스로 import 문 없이도 사용 가능 
    • ex) String, System, Process, Runtime, Math, Error, etc.
  • java.util : 날짜 처리, 난수 발생, 복잡한 문자열 처리 등의 기능 제공
    • ex) Date, Calendar, Random, StringTokenizer, etc.
  • java.io : 파일 입출력과 관련된 기능 및 프로토콜 제공
    • ex) InputStream, OutputStream, Reader, Writer, etc.
  • java.net : 네트워크 관련 기능 제공
    • ex) Socket, URL, InetAddress, etc.
  • java.awt : 사용자 인터페이스(UI) 관련 기능 제공
    • ex) Frame, Panel, Dialog, Button, Checkbox, etc.

146. 예외 처리 (Exception Handling)

: 프로그램의 정상적인 실행을 방해하는 조건이나 상태인 예외(Exception)가 발생했을 때 해당 문제에 대비해 미리 작성해놓은 처리 루틴을 수행하도록 하는 것

  • 일반적으로 프로그램을 종료시키거나 로그를 남기는 것을 처리 루틴으로 함
  • C++, Ada, Java, JavaScript, 등의 언어는 예외 처리 기능을 제공하고 있으며, 그 외의 언어에서는 필요 시에 조건문으로 예외 처리 루틴을 작성
  • 예외의 주요 원인 : 하드웨어 문제, OS의 설정 실수, 라이브러리 손상, 사용자의 입력 실수, 받아들일 수 없는 연산, etc.

 

1) Java의 예외 처리

: Java는 예외를 객체로 취급하며, 예외와 관련된 클래스를 java.lang 패키지로 제공

 

try {
	작업 수행 코드;
}
catch ( 예외_객체1 파라미터) {
	예외 객체 1에 해당하는 처리 코드;
}
catch ( 예외_객체2 파라미터) {
    try {
        예외 객체 2에 해당하는 처리 코드;
    }
    catch ( 예외_객체2.1 파라미터)
    	예외 객체 2.1에 해당하는 처리 코드;
    }
}
catch (Exception 파라미터) {
	위의 예외 객체에 해당하지 않는 예외 발생 시의 처리 코드;
}
finally {
	예외 발생 여부와 상관 없이 무조건 처리되는 코드;
}
  • try ~ catch 블록
    • try 블록에서 코드를 수행하다 예외가 발생하면 예외를 처리하는 catch 블록으로 이동해 예외를 처리
    • catch 블록에서 예외 처리 후 다시 try 블록으로 돌아가지 않음
    • catch 블록 내에서 선언한 변수는 해당 블록 내에서만 유효함
    • 다중 try ~ catch 블록 형태가 가능
    • try ~ catch 블록은 코드가 한 줄이라도 반드시 중괄호로 묶음

 

2) Java의 주요 예외 객체

  • ClassNotFoundException : 클래스를 찾지 못한 경우
  • NoSuchMethodException : 메소드를 찾지 못한 경우
  • FileNotFoundException : 파일을 찾지 못한 경우
  • InterruptedIOException : 입출력 처리가 중단된 경우
  • ArithmeticException : 0으로 나누기 등 산술 연산에서 예외가 발생한 경우
  • IllegalArgumentException : 잘못된 파라미터를 전달한 경우
  • NumberFormatException : 숫자 형식으로 변환할 수 없는 문자열을 숫자 형식으로 변환하려 한 경우
  • ArrayIndexOutOfBoundsException : 배열의 범위를 벗어난 접근을 시도한 경우
  • NegativeArraySizeException : 0보다 작은 값으로 배열의 크기를 지정한 경우
  • NullPointerException : 존재하지 않는 객체를 참조한 경우