Rumah  >  Artikel  >  Java  >  Cuba Ini Tambah pengecualian pada kelas Baris Gilir

Cuba Ini Tambah pengecualian pada kelas Baris Gilir

Patricia Arquette
Patricia Arquetteasal
2024-10-30 23:15:30662semak imbas

Tente Isto  Adicione exceções à classe Queue

Fail latihan:
QueueFullException.java
QueueEmptyException.java
FixedQueue.java
QExcDemo.java

Dalam projek ini, dua pengecualian tersuai telah dibuat untuk kelas baris gilir (Baris gilir), yang menunjukkan keadaan ralat untuk baris gilir penuh dan baris gilir kosong. Pengecualian ini digunakan oleh kaedah put() dan get().

Pengecualian Baris:

  • QueueFullException: pengecualian dilemparkan apabila cuba memasukkan elemen ke dalam baris gilir penuh.
  • Kelas termasuk medan untuk menyimpan saiz baris gilir maksimum dan mengatasi kaedah toString() untuk memaparkan mesej tersuai.
  • QueueEmptyException: pengecualian dilemparkan apabila cuba mengalih keluar elemen daripada baris gilir kosong.
  • Kelas juga menggantikan toString() untuk memaparkan mesej apabila baris gilir kosong.

Pelaksanaan Kelas Gilir Tetap:

  • Kelas FixedQueue diubah suai untuk membuang QueueFullException dan QueueEmptyException apabila keadaan ralat berlaku.
  • Untuk ini, put() dan get() mengandungi klausa lontaran dalam tandatangan mereka.
  • Dengan membuang pengecualian, anda membenarkan kod panggilan mengendalikan ralat dengan lebih cekap.

Pengecualian dan Kod Kelas Gilir Tetap:
QueueFullException.java

public class QueueFullException extends Exception {
  int size;
  QueueFullException(int s) { size = s; }
  public String toString() {
    return "\nQueue is full. Maximum size is " + size;
  }
}

QueueEmptyException.java:

public class QueueEmptyException extends Exception {
  public String toString() {
    return "\nQueue is empty.";
  }
}

FixedQueue.java:

class FixedQueue implements ICharQ {
  private char q[];
  private int putloc, getloc;

  public FixedQueue(int size) {
    q = new char[size];
    putloc = getloc = 0;
  }

  public void put(char ch) throws QueueFullException {
    if (putloc == q.length)
      throw new QueueFullException(q.length);
    q[putloc++] = ch;
  }

  public char get() throws QueueEmptyException {
    if (getloc == putloc)
      throw new QueueEmptyException();
    return q[getloc++];
  }
}

Ujian dengan QExcDemo:
Kelas QExcDemo mensimulasikan penggunaan baris gilir:
Memasukkan elemen sehingga melebihi had, melontar QueueFullException.
Ia cuba mengalih keluar elemen daripada baris gilir kosong dengan membuang QueueEmptyException.

class QExcDemo {
  public static void main(String args[]) {
    FixedQueue q = new FixedQueue(10);
    char ch;
    int i;
    try {
      for(i=0; i < 11; i++) {
        System.out.print("Attempting to store : " + (char) ('A' + i));
        q.put((char) ('A' + i));
        System.out.println(" - OK");
      }
    } catch (QueueFullException exc) {
      System.out.println(exc);
    }

    try {
      for(i=0; i < 11; i++) {
        System.out.print("Getting next char: ");
        ch = q.get();
        System.out.println(ch);
      }
    } catch (QueueEmptyException exc) {
      System.out.println(exc);
    }
  }
}

Antara Muka ICharQ yang dikemas kini:
ICharQ kini mengandungi pengecualian lontaran dalam kaedah put() dan get(), mencerminkan pengecualian yang dilemparkan oleh FixedQueue.

public interface ICharQ {
  void put(char ch) throws QueueFullException;
  char get() throws QueueEmptyException;
}

Keluaran Jangkaan:
Program ini memaparkan mesej yang menunjukkan kejayaan memasukkan dan mengalih keluar elemen, serta mesej ralat:
Beratur penuh. Saiz maksimum ialah 10 apabila baris gilir penuh.
Baris gilir kosong. apabila cuba mengalih keluar elemen daripada baris gilir kosong.

Atas ialah kandungan terperinci Cuba Ini Tambah pengecualian pada kelas Baris Gilir. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn