티스토리 뷰
import java.util.Scanner;
// 논리적 오류 -> 버그, 원하는 결과가 나오지 않을 때
// 컴파일 오류 -> 오타, 문법에 어긋난 코드 ( error )
// 런타임 오류 -> 시행 중간에 오류가 발생, 비정상적 종료( exception )
public class 예외처리1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = 10;
System.out.print("10을 나눌 숫자 입력 : ");
int b = in.nextInt();
// try : 예외 발생할 가능성이 있는 코드들을 포함
try{
a = 10 /b; // 런타임 오류 발생!
System.out.println(a); // 실행되지 않음
}catch(ArithmeticException e) { // 산술연산오류
// catch : 예외가 발생했을 때 수행할 코드를 작성
// catch( 예외 ) -> 발생할 예외의 종류 지정
System.out.println("오류 발생!");
}
}
}
10을 나눌 숫자 입력 : 0
오류 발생!
import java.util.Scanner; public class 예외처리2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int[] arr = {1,2,3}; int a = 10; System.out.print("정수 입력 : "); int b = in.nextInt(); // 종류별 오류의 처리 -> catch를 이어서 쓰면 됨 try{ System.out.println(a/b); // b가 0일경우 오류 System.out.println(arr[b]); // b가 4이상일경우 } catch( ArithmeticException e ){ System.out.println("산술 연산 오류! 0으로 나누면 안됩니다."); } catch( ArrayIndexOutOfBoundsException e ){ System.out.println("배열 범위 오류! 배열의크기는 3입니다."); } } }
정수 입력 : 10
1
배열 범위 오류! 배열의크기는 3입니다.
import java.util.Scanner;
public class 예외처리3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] arr = {1,2,3};
int a = 10;
int b = in.nextInt();
// 모든 오류를 통틀어서 처리
try{
System.out.println(a/b); // b가 0일경우 오류
System.out.println(arr[b]); // b가 4이상일경우
} catch( Exception e ){
System.out.println("오류!");
System.out.println( e );
System.out.println( e.getMessage() );
e.printStackTrace(); // 오류가 발생한 메소드까지 출력함
} finally{ // 예외 발생에 상관없이 반드시 실행하고자하는 코드 작성
System.out.println("무조건 실행됨!");
}
// Exception 클래스 : 모든 예외클래스들의 super클래스
}
}
정수 입력 : 10
1
오류!
java.lang.ArrayIndexOutOfBoundsException: 10
10
무조건 실행됨!
java.lang.ArrayIndexOutOfBoundsException: 10
at 예외처리3.main(예외처리3.java:17)
import java.util.Scanner;
class A{
static void method1(int a){
method2(a);
}
static void method2(int a){
method3(a);
}
static void method3(int a){
System.out.println(10/a);
}
}
public class 에외처리4 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("정수 입력 : ");
int a = in.nextInt();
try {
A.method1(a);
} catch(Exception e){
e.printStackTrace(); // 오류가 발생하기까지 실행된 메소드들을 거꾸로 출력
}
}
}
정수 입력 : 0
java.lang.ArithmeticException: / by zero
at A.method3(에외처리4.java:11)
at A.method2(에외처리4.java:8)
at A.method1(에외처리4.java:5)
at 에외처리4.main(에외처리4.java:22)
// 어떤 메소드들은 반드시 예외처리를 해야 호출 가능함
// 방법 1 ) try-catch 예외처리
// 방법 2 ) 메소드에 throws 선언
public class 예외처리7 {
public static void main(String[] args) {
for(int i=10; i>=0; i--){
System.out.print(i+" ");
try{
Thread.sleep(1000);
}catch(Exception e){
System.out.print("오류");
}
}
}
}
10 9 8 7 6 5 4 3 2 1 0
'JAVA > PRIMER' 카테고리의 다른 글
[JAVA] 파일입출력 - BufferedReader, BufferedWriter (0) | 2018.04.19 |
---|---|
[JAVA] 파일입출력 - FileReader, FileWriter (0) | 2018.04.19 |
[JAVA] HashMap (0) | 2018.04.19 |
[JAVA] HashSet (0) | 2018.04.19 |
[JAVA] LinkedList (0) | 2018.04.19 |
댓글