JAVA
[ JAVA ] 예외와 예외처리 ( 3 )
dauneee
2022. 1. 15. 18:24
예외처리 미루기 |
예외처리 미루기는 클래스를 만들 필요없이 메인에서 바로 함수 선언(정의)을 하여 사용할 수 있다. |
// 예외처리 미루기
public class Test02 {
// 함수 선언, 정의
static void func1() throws Exception {
// 예외처리를 호출한 대상에게, 또는 공간으로 미루겠음
// ArithmeticException 외의 예외도 가능성이 있음
// -> 최상위 예외로 처리
int a=10,b=0;
System.out.println(a/b);
System.out.println("func1() 함수 종료");
}
// static : 객체와 무관하게
// 1. 클래스 변수(공유 자원)
// 2. 클래스 외부에서 함수 단독 선언
static void func2() throws Exception {
Exception excep=new Exception("예외");
throw excep;
// 예외처리에 대한 로직이 여러개 중복될 수 있으므로(유지보수에 불리)
// 예외처리를 미루어 처리
}
public static void main(String[] args) {
try {
func2();
func1(); // 함수 호출
}
catch(Exception e) {
System.out.println(e.getMessage()); // func2
System.out.println("catch문"); // fucn1
}
finally {
System.out.println("현재 59번라인");
}
// func1() 함수는, 현재 예외처리를 미루고 있음
// 예외가 발생할 수 있기 때문에, 이 공간에서 처리
}
}
public class Test01 {
public static void main(String[] args) {
ArrayList<Integer> data=new ArrayList<Integer>();
data.add(0);
data.add(1);
data.add(2);
System.out.println(data);
// 데이터 출력하는 방법
// 1.
for(int i=0;i<data.size();i++) {
System.out.println(data.get(i));
}
// 2.
for(int v:data) { // 제네릭하지 않았다면 Object
System.out.println(v);
}
// 3. 이터레이터 사용
Iterator itr=data.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
// 예외처리 복습
Scanner sc=new Scanner(System.in);
while(true) {
System.out.println(">> ");
try {
int num=sc.nextInt(); // 인덱스 선택
System.out.println("선택한 데이터: "+data.get(num));
System.out.println(10/data.get(num));
}
catch(ArithmeticException e) {
System.out.println("계산 불가");
}
catch(IndexOutOfBoundsException e) {
System.out.println("인덱스 범위 주의");
}
catch(InputMismatchException e) {
sc.nextLine();
System.out.println("입력값의 타입 주의");
}
finally { // 무조건 수행
System.out.println();
System.out.println("계산 완료");
}
}
}
}