오후 네시부터 글을 쓰고 있다
낮에 쓰는건 조금 더 맨정신으로
할수 있다는게 정말 장점이다
물론 , 설명의 부족함이 개선되는
것은 아니지만 조금더 길고
문장을 말끔하게 쓸수 있게 된다
매번 글을 작성하고 글자수가
얼마나 되는지 세어보곤 한다
나는 꽤 길게 썼다고 생각하는데
보통 3천자를 넘기가 힘들다
책한권을 만들어내는 사람들은
그러면 얼마나 오랫동안 쓰는걸까
특히 전문화된 주제들을 쓰는 사람들은
어느정도의 시간을 그 분야에 투자
해야만 그렇게 쓸수 있을지 예상이 안된다
부럽고도 존경스러운 경지라 생각한다
더 쓰다간 예외 처리에 대해서
하나도 쓰지 못할것 같으니
오늘도 복습을 해보자
코딩을 하다보면 여러가지
예외들이 발생한다
어쩔수 없는 부분이다
간단한 예를 들자면 정수만을
입력받으려고 유도했더니
사용자가 실수를 입력할때가 있다
이것 역시 예외라 할수 있다
이러한 경우들을 모두 처리해주어야
완전한 프로그램이 될것이다
class ExceptionEx1 {
public static void divide(int num1, int num2) {
try {
// 예외가 발생할 수 있는 구문이 위치한다.
System.out.println(num1 / num2);
} catch(ArithmeticException e) {
// try 블럭 내부에서 ArithmeticException 가 발생하면
// 할일 기술
System.out.println("ArithmeticException 발생");
System.out.println("예외발생");
System.out.println("--------------e.getMessage() 결과");
System.out.println(e.getMessage());
System.out.println("--------------e.printStackTrace() 결과");
e.printStackTrace();
}
}
public static void main(String[] args) {
divide(8,2);
divide(8,0);
System.out.println("end of main");
}
}
try - catch 구문을 이용하여
예외를 처리할수 있다
사용법은 간단하다
try에 예외가 발생할 내용을 적는다
catch에서는 예외에 따라서
어떻게 처리할것인지 적어주면 된다
예제에서는 ArithmeticException가
발생하였을때에 그 위치를 알려주고 있다
직접 실행해서 어떤 문장이 어떤
결과를 나타내는지 알아보자
그리 어렵지 않을것이다
class Car{
public void print() {
System.out.println("this is a Car");
}
}
class ExceptionEx2 {
public static void main(String[] args) {
/*
RuntimeException을 상속받은 예외들은
컴파일 시 예외처리가 강제되지 않는다.
*/
Car[] cars = new Car[3];
try {
cars[0].print();
System.out.println("end of try");
} catch(NullPointerException e) {
//System.out.println("예외발생");
//System.out.println("--------------e.getMessage() 결과");
System.out.println(e.getMessage());
//System.out.println("--------------e.printStackTrace() 결과");
e.printStackTrace();
} finally {
// 100% 수행이 보장됨.
}
System.out.println("end of main");
}
}
RuntimeException을 상속받는 예외들은
처리를 강제 받지 않는다
그러면 거기에 따른 잘못된 연산은
어떻게 할것인가 생각하면
필요유무에 따라 코드를 짜는 사람이
처리구문을 적어줘야 할것이다
이번 예제에서는 finally가 나왔는데
이것은 100% 수행이 보장된다
class ExceptionEx3 {
public static void main(String[] args) {
int[] arr = null;
try {
arr = new int[-3];
} catch(NegativeArraySizeException e) {
System.out.println("배열의 길이가 음수에요~");
} finally {
System.out.println("이거슨 수행된다.");
try {
System.out.println(arr.length);
} catch(NullPointerException e) {
System.out.println("Exception in finally block");
}
System.out.println("end of try-finally");
}
System.out.println("end of main");
}
}
이번 예제에서는
NegativeArraySizeException와
NullPointerException가 어떤 예외인지
알려주고 있다
이 두개 말고도 여러가지가 있다
이건 직접 찾아보길 권장한다
배열을 다루다 보면 NullPointerException
오류를 자주 만날것이다
문맥적으로 틀린게 아니라면
이때에도 직접 설정을 해줘야 할것이다
import java.io.*;
class ExceptionEx4 {
public static void main(String[] args) {
/*
RuntimeException을 상속받지 않은 예외들은
발생가능한 연산에대해 예외처리 하지 않으면
컴파일 시 에러가 발생한다.
(예외처리가 강제됨)
*/
try {
FileReader fr = new FileReader("a.txt");
} catch(FileNotFoundException e) {
}
}
}
마지막으로 RuntimeException을 상속받지
않는 예외들을에 대해 언급해주고 있다
이때에는 무조건 적으로 처리 해줘야 한다
그렇지 않으면 에러가 발생하여
코드를 수행할수가 없게 된다
오늘은 여기까지만 하고,
내일 자바 Exception에 대한
더많은 복습을 해야 하겠다
하루만 더 버티면 주말이니
다들 열심히 하길 바란다
'IT > 자바' 카테고리의 다른 글
String 문자열에 관한 고찰 (0) | 2017.05.29 |
---|---|
Exception 나머지 예제와 throws (0) | 2017.05.28 |
Map과 HashCode (0) | 2017.05.24 |
Wrapper 클래스 BinarySearch (0) | 2017.05.23 |
자바 List and Set (0) | 2017.05.22 |
댓글