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
반응형
댓글