본문 바로가기
CLASS/JAVA

#11-1 / Exception : 예외처리

by hingu 2024. 5. 16.

🌺 Exception : 예외처리(오작동 발생)  - 종류 엄청많음

  1. 사용자의 입력실수로 인해 정보전달이 안될 경우
  2. 개발자가 프로그램 오류시 정확한 오류 파악을 하기 위한 수단
  3. 강제 프로세서에 대한 정보 수정 및 종료 

try{

}catch(Exception 변수){

}finally {

}


 ex) 회원가입시 예외처리 사항
 1. id에 한글 입력
 2. 이메일 관련
 3. 연락처 관련
 4. 동의 및 미동의(체크박스) 관련 - 미체크시 null값 날라오면 error
 5. 첨부파일 - 용량,파일속성,여러개 서버로 전송시
 6. FTP 및 메일

👀내가 해보니까~
예외처리 : if else와 비슷한데 좀더 포괄적인 느낌..?  오류나냐 안나냐로만 나눠서 출력!
try( 명령 ) 에서 오류난것들은 싹다 catch에서 실행!

 

⚡ try,catch

try : 프로세스 진행(검토하기 위함)

catch :  try에서 문제 발생시 해당 문법이 발동

finally : try가 되던 catch가 되던 무조건 작동되는 영역(개발자 선택사항,안써도됨)

(정상적으로 출력 시 발동x , 실무에선 catch를 많이 작성하진 않음 )

package oop2;

import java.util.Scanner;

public class ex1 {

	public static void main(String[] args) {
		//test aa,bb
		String a = "2000";
		double b = 0;
		
		//test cc
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 입력해 주세요 : ");
		
		try { //try : 프로세스 진행
			b = Integer.valueOf(a) / 3;
			//System.out.println(b);

			Integer user = sc.nextInt();
		}catch(java.lang.NumberFormatException bb) {
			//오류내용 입력 + 변수(같은 이름으로 Exeption을 사용하지 않음)
			System.out.println("문자를 숫자로 변경되는 사항 오류 발생!!");
		}catch(java.util.InputMismatchException cc) {
			System.out.println("숫자로 입력하지 않음");
		}catch(Exception aa){ //catch는 try에서 문제 발생시 해당 문법이 발동
			System.out.println(aa);
		}	
		sc.close();
	}
}


//기본 예제2

package oop2;
import java.util.Scanner;

public class ex2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("사용자 이름을 입력해주세요 : ");
		try {
			String username = sc.nextLine().intern();
			if(username == "" || username == null) { 
				System.out.println("미입력");
			}else {
				System.out.println("입력완료");
				System.out.println("연락처를 입력하세요. 단, - 없이 입력");
				Integer tel = sc.nextInt();
				System.out.println(tel);
			}
		}catch(Exception e) {
			System.out.println(e);
		}finally { //try가 되던 catch가 되던 무조건 작동되는 영역(개발자 선택사항,안써도됨)
			System.out.println("실행");
			sc.close();
		}
	}
}

 

⚡ 변수.printStackTrace();
오류 발생시 몇번째 라인에서 오류났는지 출력해줌
package oop2;
public class ex3 {

	public static void main(String[] args) {
		String a = "50s00";
		int b = 0;
		try {
			b = b + Integer.parseInt(a);
		}catch(java.lang.NumberFormatException nfe) { //해당 예외처리가 발생시
			nfe.printStackTrace();
			//해당 문법으로 문제처리를 한 후 결과값을 정상적으로 진행시킴
			a = a.replaceAll("[a-zA-Z]", ""); 
			b = b + Integer.parseInt(a); //다시 실행
		}catch(Exception e) { 
			e.printStackTrace(); //오류 발생시 몇번째 라인에서 오류났는지 출력해줌
			//System.out.println(e);
		}
		System.out.println(b);

	}
}

 

⚡ 예외처리 응용편(reload)
package oop2;
import java.util.Scanner;

//예외처리 응용편(reload)
public class ex4 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("입금할 금액을 입력하세요 : ");
		try {
			int money = sc.nextInt();
			System.out.println("정상적으로 입금이 완료되었습니다.");
		}catch(Exception e) {
			System.out.println("숫자만 제발 입력하세요ㅠ");
			//해당 클래스와 메소드를 재실행시킴
			  //main 처음부터 다시 실행 (숫자 입력할때까지 재실행됨! like 재귀)
			ex4 ex = new ex4();
			ex.main(args); 
		}finally {
			sc.close();
		}

	}
}

'CLASS > JAVA' 카테고리의 다른 글

#12 / remind2  (0) 2024.05.17
#11-2 / 배열을 이용한 예외처리  (0) 2024.05.16
#10-2 / 단어 검토 및 변경(정규식 코드)  (0) 2024.05.14
#10-1 / Interface  (0) 2024.05.14
#9-3 / class + class  (0) 2024.05.13