SECTION 013. 라이브러리
1. 라이브러리의 개념
-
라이브러리는 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합체이다.
– 자주 사용하는 함수들의 반복적인 코드 작성을 피하기 위해 미리 만들어 놓은 것으로, 언제든지 호출하여 사용할 수 있다.
– 라이브러리에는 표준 라이브러리와 외부 라이브러리가 있다. -
표준 라이브러리
– 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리로, 여러 종류의 모듈이나 패키지 형태이다. -
외부 라이브러리
– 개발자들이 필요한 기능들을 만들어 인터넷 등에 공유해 놓은 것으로, 외부 라이브러리를 다운받아 설치하여 사용할 수 있다.
2. C언어의 대표적인 표준 라이브러리
- C언어는 라이브러리를 헤더 파일로 제공하는데, 각 헤더 파일에는 응용 프로그램 개발에 필요한 함수들이 정리되어 있다.
– C언어에서 헤더 파일을 사용하려면 ‘#include <stdio.h>’ 와 같이 include 문을 이용해 선언한 후 사용해야 한다.
헤더 파일 | 기능 |
---|---|
stdio.h | - 데이터의 입,출력에 사용되는 기능들을 제공한다. - 주요 함수 : printf, scanf, fprintf, fscanf, fclose, fopen 등 |
math.h | - 수학 함수들을 제공한다. - 주요 함수 : sqrt, pow, abs 등 |
string.h | - 문자열 처리에 사용되는 기능들을 제공한다. - 주요 함수 : strlen, strcpy, strcmp 등 |
stdlib.h | - 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능들을 제공한다. - 주요 함수 : atoi, atof, srand, rand, malloc, free 등 |
time.h | - 시간 처리에 사용되는 기능들을 제공한다. - 주요 함수 : time, clock 등 |
3. Java의 대표적인 표준 라이브러리
- Java는 라이브러리를 패키지에 포함하여 제공하는데, 각 패키지에는 Java 응용 프로그램 개발에 필요한 메소드들이 클래스로 정리되어 있다.
– Java에서 패키지를 사용하려면 ‘import java.util’ 과 같이 import문을 이용해 선언한 후 사용해야 한다.
– import로 선언된 패키지 안에 있는 클래스의 메소드를 사용할 때는 클래스와 메소드를 마침표(.)로 구분하여 ‘Math.abs()’ 와 같이 사용한다.
패키지 | 기능 |
---|---|
java.lang | - Java에 기본적으로 필요한 인터페이스, 자료형, 예외 처리 등에 관련된 기능을 제공한다. - import문 없이도 사용할 수 있다. - 주요 클래스 : String, System, Process, Runtime, Math, Error 등 |
java.util | - 날짜 처리, 난수 발생, 복잡한 문자열 처리 등에 관련된 기능을 제공한다. - 주요 클래스 : Date, Calender, Random, StringTokenizer 등 |
java.io | - 파일 입,출력과 관련된 기능 및 프로토콜을 제공한다. - 주요 클래스 : InputStream, OutputStream, Reader, Writer 등 |
java.net | - 네트워크와 관련된 기능을 제공한다. - 주요 클래스 : Socket, URL, InetAddress 등 |
java.awt | - 사용자 인터페이스(UI)와 관련된 기능을 제공한다. - 주요 클래스 : Frame, Panel, Dialog, Button, Checkbox 등 |
4. Python의 대표적인 표준 라이브러리
- Python은 Java와 동일하게 라이브러리를 패키지로 제공하며, 패키지에는 응용 프로그램 개발에 필요한 클래스와 메소드들이 정의되어 있다.
– Python에서 라이브러리를 사용하려면 ‘import random’ 과 같이 선언하고, 사용할 때는 마침표(.)로 구분하여 ‘random.choice()’ 와 같이 사용한다.
클래스 | 기능 |
---|---|
내장함수 | - Python에 기본적인 인터페이스로, import문이나 클래스명 없이도 사용할 수 있다. - 주요 메소드 : abs(), slice(), pow(), print() 등 |
os | - 운영체제와 상호 작용하기 위한 기능을 제공한다. - 주요 메소드 : getcwd(), chdir(), system() 등 |
re | - 고급 문자열 처리를 위한 기능을 제공한다. - 주요 메소드 : findall(), sub() 등 |
math | - 복잡한 수학 연산을 위한 기능을 제공한다. - 주요 메소드 : cos(), log() 등 |
random | - 무작위 선택을 위한 기능을 제공한다. - 주요 메소드 : choice(), sample(), random(), randrange() 등 |
statistics | - 통계값 산출을 위한 기능을 제공한다. - 주요 메소드 : mean(), median(), variance() 등 |
datetime | - 날짜와 시간 조작을 위한 기능을 제공한다. - 주요 메소드 : today(), date(), strftime() 등 |
SECTION 018. 예외처리
1. 예외 처리의 개요
– 프로그램의 정상적인 실행을 방해하는 조건이나 상태를 예외 (Exception) 라고 하며, 이러한 예외가 발생했을 때를 대비하여 작성해 놓은 처리 루틴을 수행하도록 하는 것을 예외 처리 (Exception Handling) 라고 한다.
- 예외가 발생했을 때 일반적인 처리 루틴은 프로그램을 종료시키거나 로그를 남기도록 하는 것이다.
– C++, Ada, Java 자바스크립트와 같은 언어에는 예외 처리 기능이 내장되어 있으며, 그 외 언어에서는 필요한 경우 조건문을 이용해 예외 처리 루틴을 작성한다.
– 예외의 원인에는 컴퓨터 하드웨어 문제, 운영체제의 설정 실수, 라이브러리 손상, 사용자의 입력 실수, 받아들일 수 없는 연산, 할당하지 못하는 기억장치 접근 등 다양하다.
2. Java의 예외 처리
-
Java는 예외를 객체로 취급하며, 예외와 관련된 클래스를 java.lang 패키지에서 제공한다.
-
Java 에서는 try~catch 문을 이용해 예외를 처리한다.
– try 블록 코드를 수행하다 예외가 발생하면 예외를 처리하는 catch 블록으로 이동하여 예외 처리 코드를 수행하므로 예외가 발생한 이후의 코드는 실행되지 않는다.
– catch 블록에서 선언한 변수는 해당 catch 블록에서만 유효하다.
– try~catch 문 안에 또 다른 try~catch 문을 포함할 수 있다.
– try~catch 문 안에서는 실행 코드가 한 줄이라도 중괄호({ }) 를 생략할 수 없다.
1) 기본 형식
try {
// 예외가 발생할 가능성이 있는 코드
} catch (예외객체1 매개변수) {
// 예외객체1에 해당하는 예외 발생 시 처리 코드
} catch (예외객체2 매개변수) {
// 예외객체2에 해당하는 예외 발생 시 처리 코드
...
} catch (예외객체n 매개변수) {
// 예외객체n에 해당하는 예외 발생 시 처리 코드
} catch (Exception 매개변수) {
// 예외객체 1~n 에 해당하지 않는 예외 발생 시 처리 코드
} finally {
// 예외의 발생 여부와 관계 없이 무조건 처리되는 코드
}
– 일반적으로 예외가 발생한 경우에는 ‘try → catch → finally’ 문 순서로 진행되며, 예외가 발생하지 않은 경우에는 ‘try → finally’ 문 순서로 진행된다.
– finally 문은 예외 발생과 관계없이 무조건 수행되는 블록이며, 생략이 가능하다.
3. Java의 주요 예외 객체
예외 객체 | 발생 원인 |
---|---|
ClassNotFoundException | 클래스를 찾지 못한 경우 |
NoSuchMethodException | 메소드를 찾지 못한 경우 |
FileNotFoundException | 파일을 찾지 못한 경우 |
InterruptedIOException | 입출력 처리가 중단된 경우 |
ArithmeticException | 0으로 나누는 등의 산술 연산에 대한 예외가 발생한 경우 |
IllegalArgumentException | 잘못된 인자를 전달한 경우 |
NumberFormatException | 숫자 형식으로 변환할 수 없는 문자열을 숫자 형식으로 변환한 경우 |
ArrayIndexOutOfBoundsException | 배열의 범위를 벗어난 접근을 시도한 경우 |
NegativeArraySizeException | 0보다 작은 값으로 배열의 크기를 지정한 경우 |
NullPointerException | 존재하지 않는 객체를 참조한 경우 |