본문 바로가기
2022-2/자바

Exception

by 철없는민물장어 2022. 10. 20.
728x90
반응형

수식 계산할 때 0으로 나누면 오류가 발생한다.

 

public class Numbers {
	double tot,avg;
	int arr[];
	Numbers(int[] nums){
		this.arr = nums;
		
		
	}
	double getTot() {
		for(int i=0;i<arr.length;i++) {
			tot += arr[i];
		}
		return tot;
	}
	double getAvg() {
		avg = getTot() / (double)arr.length;
		return avg;
	}
	public static void main(String[] args) {

		int[] arr = new int[0];
		Numbers obj = new Numbers(arr);
		System.out.println("합계 = "+obj.tot);

		try {
			double avg = obj.getAvg();
			System.out.println("평균 = "+avg);
		}catch(java.lang.ArithmeticException e) {
			System.out.println("오류발생");
		}
	
	}

}

0으로 나눌 시 발생하는 오류를 

try-catch(오류)문으로 작성할 수 있다.


인위적인 Exception의 발생 방법

 

throw키워드를 이용.

Exception을 이용하여 익셉션 객체를 생성.

 

throw new Exception("잔액이 부족합니다");

 

class 메소드가 exception을 발생할 수도 있다.

 

public class Account {

	String accountNum;
	String name;
	int balance;
	
	void deposit(int amnt) {
		this.balance += amnt;
		System.out.println(name+"님 게좌에"+amnt+"입금 후 계좌잔액: "+balance);
	}
	Account(String accountNum,String name){
		this(accountNum,name,0);
	}
	Account(String accountNum, String name, int balance){
		this.accountNum = accountNum;
		this.name = name;
		this.balance = balance;
	}
	int withdraw(int amnt) throws Exception{
		if(balance - amnt >=0) {
			this.balance -= amnt;
			System.out.println(name+"님 계좌에서 "+amnt+"인출완료");
			return amnt;
		}
		else {
			throw new Exception("잔액 부족!!!");
		}
	}
	void printInfo() {
		System.out.println("*************info************");
		System.out.println("계좌번호: "+accountNum);
		System.out.println("계좌주: "+name);
		System.out.println("잔액: "+balance);
		System.out.println("*****************************");
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

withdraw 메소드 선언부를 보자.

int withdraw(int amnt) throws Exception{

.

if( . . .)

throw new Exception("오류 발생");

}

메소드 에서 특정 상황 발생시 exception을 발생한다.

 

이후 메인함수 내에서 사용시

	try {
			int amount = objs[2].withdraw(50000);
		
		}catch(Exception e) {
			System.out.println(e.getMessage());
		}

try-catch문을 이용.

오류메세지는 .getMessage 메소드를 사용할 수 있다.

728x90
반응형

'2022-2 > 자바' 카테고리의 다른 글

자바 중간고사  (0) 2022.10.26
Object, String, StringBuffer  (0) 2022.10.21
3. 객체지향  (0) 2022.10.20
오버로딩  (0) 2022.10.20
객체와 클래스  (0) 2022.10.11

댓글