package day040;
public class Day04001예외처리1 {
public static void main(String[] args) {
int num = 0;
// 어떤 숫자를 0으로 나누면 에러 발생
// java.lang.ArithmeticException: / by zero
// System.out.println(num / 0);
/*
* # try - catch
* . 자바는 일반적으로 에러가 발생하면 프로그램이 즉시 종료한다.
* . try - catch는 에러가 발생해도 프로그램이 종료되지 않고,
* 에러가 발생한 부분만 동작하지 않고 프로그램이 계속 진행하도록 만들어 준다.(매우 좋음)
*
* # 사용법
* . try {} : 중괄호 안에 코드를 작성하면 에러가 발생하면
바로 catch 중괄호로 이동한다.
* . catch(Exception e) {} : 에러가 발생하면 한번 작동된다.
*/
try {
System.out.println(num / 0);
} catch (Exception e) {
// 방법(1) 직접 에러가 발생했을 때 보여줄 문구를 출력한다.
System.out.println("0으로 나눌 수 없습니다.");
// 방법(2) 자바에서 제공하는 설명서를(어떤 에러인지 설명해줌) 출력한다.
e.printStackTrace();
}
System.out.println("프로그램 종료");
}
}
package day040;
public class Day04001예외처리2 {
public static void main(String[] args) {
// # 주석처리를 통해 하나씩 실행해보자.
//----------------------------------------
// 실습1)
int[] arr = new int[3];
try {
arr[100] = 100;
}catch(ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
//----------------------------------------
//----------------------------------------
// 실습2)
int x = 10;
try {
int y = 10 / 0;
}catch(ArithmeticException e) {
e.printStackTrace();
}
//----------------------------------------
//----------------------------------------
// 실습3)
String str = "java";
try {
int num = Integer.parseInt(str);
}catch(NumberFormatException e) {
e.printStackTrace();
}
//----------------------------------------
// # 결론)
// 이처럼 에러의 종류는 너무 많기 때문에
// 모든 에러를 처리해주는 Exception을 보통 사용한다.
}
}
package day040;
public class Day04003예외처리3 {
public static void main(String[] args) {
// # try - catch - finally
// # finally
// 에러 유무와 상관없이 무조건 실행되는 구역이다.
int x = 10;
int y = 0;
try {
System.out.println(x / y);
}catch(Exception e) {
System.out.println("0으로 나눌 수 없습니다.");
}finally {
System.out.println("예외발생과 상관없이 무조건 실행할 문장을 적는다.");
}
}
}