▶ 예외 (Exception)
- 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인한 오류
- 예외가 발생되면 프로그램 종료
- 예외 처리 추가하면 정상 실행 상태로 돌아갈 수 있음
1) 컴파일 오류 (Complie Error) : 컴파일 불가
2) 런타임 오류 (Runtime Error) : 실행 중 오류
3) 논리 오류 (Logical Error) : 버그 (흐름상 잘못된 코딩) => 해결이 제일 어려움
(1) 예외 처리 예시
package prac01;
public class ErrorExam {
public static void main(String[] args) {
String str = null;
try {
System.out.println(4 / 0); // Arithmetic
System.out.println(new String().charAt(1)); // IndexOutOfBounds
System.out.println(str.equals("")); // NullPointer
int[] arrs = new int[-1]; // NegativeArraySize
} catch(ArithmeticException e) {
System.out.println("산술연산 예외 발생");
} catch (StringIndexOutOfBoundsException e) {
System.out.println("문자열의 인덱스 범위초과");
} catch (NullPointerException e) {
System.out.println("널 포인터 오류 발생");
} catch (NegativeArraySizeException e) {
System.out.println("네거티브 배열 크기 오류 발생");
}
}
}
(2) 데이터 수집 1 코드 예외처리
package prac01;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class 데이터수집1 {
public static void main(String[] args) {
URL url = null;
try {
url = new URL("http://ggoreb.com/quiz/harry_potter.txt");
URLConnection con = url.openConnection();
InputStream in = con.getInputStream(); // getFileInputStream(); 으로 작성할경우 내장되어있는 파일을 가져올 수 있음
String result = "";
while(true) {
int data = in.read();
if(data == -1) break;
char c = (char) data;
result += c;
}
System.out.println(result);
} catch (MalformedURLException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
(2) 데이터 수집 2 코드 예외처리
package prac01;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class 데이터수집2 {
public static void main(String[] args) {
URL url = null;
try {
url = new URL("http://ggoreb.com/quiz/운수좋은날.txt");
URLConnection con = url.openConnection();
InputStream in = con.getInputStream();
InputStreamReader isr = new InputStreamReader(in, "euc-kr");
BufferedReader reader = new BufferedReader(isr);
String result = "";
while(true) {
String data = reader.readLine();
if(data == null) break;
result += data + "\n";
}
System.out.println(result);
} catch (MalformedURLException e) {
throw new RuntimeException(e);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
▶try ~ catch ~ finally 코드 진행