import java.util.InputMismatchException;
import java.util.Iterator;
import java.util.Scanner;
public class ExceptionEx {
public ExceptionEx() {
Scanner sc = new Scanner(System.in);
while(true) {
try {
System.out.print("첫번쨰 수 => ");
int num1 = Integer.parseInt(sc.nextLine());
//int num1 = sc.nextInt();
System.out.print("두번째 수 => ");
int num2 = Integer.parseInt(sc.nextLine()); //
//int num2 = sc.nextInt(); // inputMismatchException
int result = num1 * num2;
int result2 = num1 / num2; //---- 0으로 나누기 ArithmeticException
System.out.println(num1 + "*" + num2 + "= " + result);
System.out.printf("%d/%d=%d\n", num1, num2, result2);
String names[] = {"세종대왕", "이순신"};
for (int i = 0; i <=names.length; i++) { //배열 index ArrayIndexOUtOfBoundsException
System.out.println("names["+i+"]= "+ names[i]);
}
}catch(NumberFormatException nfe) {
System.out.println("숫자만 입력하세요 ");
}catch(InputMismatchException ime) {
System.out.println("숫자만 입력해주세요");
break;
}catch(ArithmeticException ae) {
System.out.println("두번째 값은 0외의 값으로 입력해주세요");
break;
}catch(ArrayIndexOutOfBoundsException ai) {
System.out.println("배열의 index를 잘못사용하였습니다." + ai.getMessage());
break;
}
}
}
public static void main (String args[]) {
new ExceptionEx();
}
}
exception에러 1. 컴파일 에러 javac.exe
2. 런타임 에러 java.exe
finally >>값이 잘나오든 안나오든 무조건 쓰임
public class ExceptionTest2 {
public ExceptionTest2() {
try {
int data[] = {10,8,95,32,54};
System.out.println(data[data.length-1]);
} catch (ArrayIndexOutOfBoundsException ae) {
System.out.println("배열의 index를 잘못사용하였습니다 >>>>>>"+ ae.getMessage());
}finally {
System.out.println("finally : 무조건 한번은 실행됨..");
}
}
public static void main(String[] args) {
new ExceptionTest2();
}
}
메소드에 예외처리 : throws 잘안씀
public class ExceptionTestMethod {
public ExceptionTestMethod() throws ArithmeticException, NumberFormatException, ArrayIndexOutOfBoundsException{
method1();
}
public void method1() throws ArithmeticException, NumberFormatException, ArrayIndexOutOfBoundsException{
int a=100, b=12;
int c = a/b; //exception
System.out.println("c = "+ c);
method2();
}
public void method2() throws NumberFormatException, ArrayIndexOutOfBoundsException{
String numStr="12";
int num = Integer.parseInt(numStr); //exception
System.out.println("num = "+ num);
method3();
}
public void method3() throws ArrayIndexOutOfBoundsException{
int num[] = {10,20,30};
System.out.println(num[num.length]); //exception
}
public static void main(String args[]){
try {
new ExceptionTestMethod();
}catch(ArithmeticException ae) {
System.out.println("0으로 나눌수 없습니다 ==> " + ae.getMessage());
}catch(NumberFormatException nf) {
System.out.println("문자는 숫자로 변경할수 없습니다. --->" + nf.getMessage() );
}catch(ArrayIndexOutOfBoundsException ar) {
System.out.println("배열이 잘못되었습니다.==>" + ar.getMessage());
}
System.out.println("프로그램 종료");
}
}
콘솔정수입력: 사용자 정의 예외 만들기
조건:exception 상속받아 예외클래스 만들기
public class MyException extends Exception {
// 1~10까지의 값만 유효한 값이다.
public MyException() {
super("1~10까지의 값만 유효한 값이다.");
}
//매개변수의 값이 예외 메세지로 설정
public MyException(String message) {
super(message);
}
}
import java.util.Scanner;
public class MyExceptionTest {
Scanner sc = new Scanner(System.in);
public MyExceptionTest() {
try {
System.out.print("1~10까지의 정수 입력 = ");
int data = sc.nextInt(); // InputMismachException
if(data<1 || data>10) {
//throw 강제 예외발생
//throw new MyException();
throw new MyException("1에서 10까지 정수가 아니다.");
}else {
//정상처리
sum(data);
}
}catch(MyException e){
e.printStackTrace();
}
}
public void sum(int m) {
int s = 0;
for (int i = 0; i < m; i++) {
s += i;
}
}
public void start() {
}
public static void main(String[] args) {
new MyExceptionTest();
}
}
'language > java실습' 카테고리의 다른 글
[java,자바] 회사관리 프로그램 만들기 (0) | 2021.01.11 |
---|---|
[java,자바] TreeSet을 이용하여 로또 프로그램 실습하기 (0) | 2021.01.09 |
[java,자바] 계산기 모음 (0) | 2021.01.05 |
[java,자바] 입력받은숫자가 소수, 정수인지 판별하기 (0) | 2021.01.04 |
[java,자바] 성적출력프로그램2 배열이용 (0) | 2021.01.04 |
최근댓글