package ex0727;
public class Ex111_throws {
public static void main(String[] args) {
User11 u = new User11();
u.setValue(-5);
int n = u.getValue();
System.out.println(n);
}
}
// 잘못 작성된 클래스
class User11 {
private int value;
public void setValue(int value) {
if (value < 0)
return;
this.value = value;
}
public int getValue() {
return value;
}
}
package ex0727;
public class Ex112_throwsChecked {
public static void main(String[] args) {
User12 u = new User12();
try {
u.setValue(-5);
int n = u.getValue();
System.out.println(n);
} catch (Exception e) {
// e.printStackTrace();
System.out.println(e.toString());
}
System.out.println("end...");
}
}
class User12 {
private int value;
public void setValue(int value) throws Exception { // 메소드를 호출하는 곳에서 catch하도록 설정
if (value < 0) {
// 강제로 checked exception을 발생 시킴
throw new Exception("0 이상만 가능합니다."); // 예외를 발생시키는 것
}
this.value = value;
}
public int getValue() {
return value;
}
}
package ex0727;
public class Ex113_throws {
public static void main(String[] args) throws Exception { // throws : 메소드를 호출한 곳에서 예외를 처리하도록
User13 ob = new User13();
// 이곳에서 try~catch로 예외를 catch하지 않고 main()을 호출하는 곳에서 예외 처리하도록 설정
// 위처럼 main() 메소드에서 throws 할 경우 예외가 발생하면
// 프로그램은 비 정상 종료된다. main()에서는 하면 안된다!!
ob.setValue(-5);
int n = ob.getValue();
System.out.println(n);
System.out.println("end...");
}
}
class User13 {
private int value;
public void setValue(int value) throws Exception { // 메소드를 호출하는 곳에서 catch하도록 설정
if (value < 0) {
// 강제로 checked exception을 발생 시킴
throw new Exception("0 이상만 가능합니다.");
}
this.value = value;
}
public int getValue() {
return value;
}
}
package ex0727;
public class Ex114_throws {
public static void main(String[] args) {
User14 ob = new User14();
ob.setValue(-5);
int n = ob.getValue();
System.out.println(n);
System.out.println("end...");
}
}
class User14 {
private int value;
public void setValue(int value) {
try {
if (value < 0) {
throw new Exception("0 이상만 가능합니다.");
}
this.value = value;
} catch (Exception e) {
// 위에서 throw new Exception("") 한 예외를 이곳에서 catch함
System.out.println(e.toString());
}
}
public int getValue() {
return value;
}
}
package ex0727;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Ex115_throws {
public static void main(String[] args) {
User15 ob = new User15();
ob.input();
ob.input();
}
}
class User15 {
private Scanner sc = new Scanner(System.in);
public void input() {
String name, tel;
int kor, eng;
try {
System.out.print("이름 ? ");
name = sc.next();
System.out.print("국어 ? ");
kor = inputScore();
System.out.print("영어 ? ");
eng = inputScore();
System.out.print("전화번호 ? ");
tel = sc.next();
System.out.println(name + "," + kor + ":" + eng + ":" + tel);
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("------------------------------");
}
// 점수를 입력 받는 메소드
private int inputScore() throws Exception { // 메소드를 호출하는 곳에서 예외처리하도록 설정
int s = 0;
try {
s = sc.nextInt();
if (s < 0 || s > 100) {
// 강제로 checked exception을 발생 시킴
throw new Exception("점수는 0~100 사이만 가능합니다.");
}
} catch (InputMismatchException e) {
// System.out.println("숫자만 입력 가능 합니다.");
// 문제가 있는 데이터를 읽어서 버림(없으면 이상한 현상이 발생 됨.)
sc.nextLine();
// 강제로 checked exception을 발생 시킴
throw new Exception("점수는 숫자만 입력 가능합니다.");
}
return s;
}
}
package ex0727;
public class Ex116_throwUnchecked {
public static void main(String[] args) {
User16 u = new User16();
/*
u.setValue(-5);
// value가 0보다 적어 RuntimeException이 발생.
// 예외를 처리하지 않아 프로그램은 이곳에서 비정상적인 종료
int n = u.getValue();
System.out.println(n);
System.out.println("end...");
*/
try {
u.setValue(-5);
int n= u.getValue();
System.out.println(n);
} catch (Exception e) {
System.out.println(e.toString());
}
System.out.println("end...");
}
}
class User16 {
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
if (value < 0) {
// 숫자가 음수인 경우 RuntimeException 예외를 발생 시킴
// RuntimeException은 unchecked exception으로 반드시 catch할 필요가 없다.
throw new RuntimeException("0이상만 가능합니다.");
}
}
}
'쌍용강북교육센터 > 7월' 카테고리의 다른 글
0727_Ex03_anonymous class : 익명클래스 (0) | 2021.07.27 |
---|---|
0727_Ex01~Ex02_중첩 클래스 (0) | 2021.07.27 |
0727_Ex110_tryResource (0) | 2021.07.27 |
0727_Ex106~Ex108_finally (0) | 2021.07.27 |
0727_Ex101~Ex105, Ex109_exception : 예외처리 (0) | 2021.07.27 |