Contents
try-catch예외처리요?
자바에서 예외(exception)은 exceptional event를 말한다. 프로그래밍 중, 예외적인 상황에 의해 오류가 발생할 수 있다. 예를들어 인덱스가 배열의 한계를 넘을 수 있는데(나누기 0을 하는 경우 무한대의 값이 나오겠죠?? ), 예외처리는 이런 예외의 오류를 감지하여 처리 또는 종료시키는 것입니다.
try-catch
자바에서는 try-catch 구조를 사용하여 예외를 처리합니다.
만들기
try {
// 예외가 발생할 수 있는 코드
} catch (예외클래스 변수) {
// 예외를 처리하는 코드
}
단축키 Ctrl + Alt + T :

이번에 우리가 쓸 건 6. try / catch입니다.
자 예제입니다.
class Cal2{
// RuntineException = 엄마가 알려주지 않았을 때
public void divide(int num) throws Exception{
System.out.println(10/num);
}
}
public class TryEx01 {
public static void main(String[] args) {
Cal2 c2 = new Cal2();
try {
c2.divide(5); // 정수값과 0을 넣어보자
} catch (Exception e) {
System.out.println("0으로 나눌 수 없어요.");
}
}
}


오류 강제 발생 코드
public class TryEx02 {
public static void main(String[] args) {
// throw키워드 : 오류 강제 발생
throw new RuntimeException("오류 강제 발생");
}
}

Exception의 메소드 사용해보기
getMessage()
getClass()
printStackTrace()


예외처리를 사용하지 않은 프로그램
// 약속 : 1은 정상, 2는 id 제약조건 실패, 3은 pw 제약조건 실패
// 책임 : 데이터베이스 상호작용
class Repository {
int insert(String id, String pw) {
System.out.println("레포지토리 insert 호출됨");
if (id.length() < 4) {
return 2;
}
if (pw.length() > 10) {
return 3;
}
return 1;
}
}
// 책임 : 유효성 검사
class Controller {
String join(String id, String pw) {
System.out.println("컨트롤러 회원가입 호출됨");
if (id.length() < 4) {
return "유효성검사 : id의 길이가 4자 이상이어야 합니다.";
}
Repository repo = new Repository();
int code = repo.insert(id, pw);
if (code == 2) {
return "id가 잘못됐습니다";
}
if (code == 3) {
return "pw가 잘못됐습니다";
}
return "회원가입이 완료되었습니다";
}
}
public class TryEx03 {
public static void main(String[] args) {
Controller con = new Controller();
String message = con.join("ssar", "12345678901"); // 여기
System.out.println(message);
}
}
id와 pw값에 여러가지 값을 넣어 봅시다



위의 코드를 예외처리를 사용해보겠습니다
class Repository2 {
void insert(String id, String pw) throws Exception{
System.out.println("레포지토리 insert 호출됨");
if (id.length() < 4) {
throw new RuntimeException("DB : id길이가 너무 짧습니다. (4자 이상)");
}
if (pw.length() > 10) {
throw new RuntimeException("DB : pw길이가 너무 길어요. (10자 이하)");
}
}
}
// 책임 : 유효성 검사
class Controller2 {
void join(String id, String pw) throws Exception {
System.out.println("컨트롤러 회원가입 호출됨");
if (id.length() < 4) {
throw new RuntimeException ("Controller : id길이가 너무 짧습니다. (4자 이상)");
}
Repository2 repo = new Repository2();
repo.insert(id, pw);
}
}
public class TryEx04 {
public static void main(String[] args) {
Controller2 con = new Controller2();
try {
System.out.println("회원가입 성공");
con.join("ssra", "1234567890");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
throws
키워드 : 호출 한 클래스에 예외를 위임. 해당 메서드에서 발생할 수 있는 예외를 호출한 곳으로 전파시킬 때 사용된다.Share article