Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 사용자 정의 예외 클래스를 언제 생성해야 합니까?

<시간/>

우리는 자바에서 우리 자신의 예외를 만들어야 합니다. 자체 예외 클래스를 작성할 때 다음 사항을 염두에 두십시오.

  • 모든 예외는 Throwable의 자식이어야 합니다.
  • 핸들 또는 선언 규칙에 의해 자동으로 적용되는 확인된 예외를 작성하려면 예외 클래스를 확장해야 합니다.
  • 런타임 예외를 작성하려면 RuntimeException 클래스를 확장해야 합니다.

아래와 같이 Exception 클래스를 정의할 수 있습니다.

class MyException extends Exception {
}

우리는 Exception 클래스를 확장하여 우리 자신의 Exception 클래스를 생성하기만 하면 됩니다. 이러한 예외는 확인된 예외로 간주됩니다. 다음 InsufficientFundsException 클래스는 Exception 클래스를 확장하여 검사 예외로 만드는 사용자 정의 예외입니다.

// File Name InsufficientFundsException.java
import java.io.*;
class InsufficientFundsException extends Exception {
   private double amount;
   public InsufficientFundsException(double amount) {
      this.amount = amount;
   }
   public double getAmount() {
      return amount;
   }
}

// File Name CheckingAccount.java
class CheckingAccount {
   private double balance;
   private int number;
   public CheckingAccount(int number) {
      this.number = number;
   }
   public void deposit(double amount) {
      balance += amount;
   }
   public void withdraw(double amount) throws InsufficientFundsException {
      if(amount <= balance) {
         balance -= amount;
      }
      else {
         double needs = amount - balance;
         throw new InsufficientFundsException(needs);
      }
   }
   public double getBalance() {
      return balance;
   }
   public int getNumber() {
      return number;
   }
}
// File Name BankDemo.java
public class BankDemo {
   public static void main(String [] args) {
      CheckingAccount c = new CheckingAccount(101);
      System.out.println("Depositing $500...");
      c.deposit(500.00);
      try {
         System.out.println("\nWithdrawing $100...");
         c.withdraw(100.00);
         System.out.println("\nWithdrawing $600...");
         c.withdraw(600.00);
      } catch(InsufficientFundsException e) {
         System.out.println("Sorry, but you are short $" + e.getAmount());
         e.printStackTrace();
      }
   }
}

출력

Depositing $500...
Withdrawing $100...
Withdrawing $600...
Sorry, but you are short $200.0
InsufficientFundsException
at CheckingAccount.withdraw(BankDemo.java:32)
at BankDemo.main(BankDemo.java:53)