Rumah > Java > javaTutorial > Bagaimanakah InterruptedExceptions Harus Dikendalikan di Jawa?

Bagaimanakah InterruptedExceptions Harus Dikendalikan di Jawa?

Barbara Streisand
Lepaskan: 2024-12-30 03:34:23
asal
190 orang telah melayarinya

How Should InterruptedExceptions Be Handled in Java?

Mengendalikan Gangguan di Java: Dua Pendekatan dan Amalan Terbaik

Di Java, pengendalian InterruptedException adalah penting apabila berurusan dengan kaedah yang boleh membuang pengecualian ini. Dua pendekatan biasa untuk mengendalikan gangguan ini ialah:

Menyebarkan Gangguan (Pendekatan Pertama)

try {
 // ...
} catch (InterruptedException e) { 
   Thread.currentThread().interrupt(); 
}
Salin selepas log masuk

Pendekatan ini sesuai apabila InterruptedException mewakili hasil yang sah bagi kaedah dan harus disebarkan kepada pemanggil. Sebagai contoh, jika kaedah melakukan panggilan rangkaian menyekat yang melemparkan InterruptedException, masuk akal untuk membiarkan pengecualian ini disebarkan, menunjukkan bahawa operasi telah terganggu.

Menangkap dan Menetapkan Bendera Terganggu (Pendekatan Kedua)

try {
 //...
} catch (InterruptedException e) {
   Thread.currentThread().interrupt();
   throw new RuntimeException(e);
}
Salin selepas log masuk

Pendekatan ini lebih disukai apabila kaedah tidak dapat menghasilkan keputusan yang sah sekiranya berlaku gangguan dan harus ditamatkan. Dengan menetapkan bendera yang terganggu (Thread.currentThread().interrupt()), ia memastikan bahawa utas kekal terganggu, memaklumkan pemanggil tentang gangguan itu.

Memutuskan Pendekatan Terbaik

Yang sesuai pendekatan bergantung pada situasi:

  • Menyebarkan Pengecualian: Jika masuk akal untuk kaedah membenarkan gangguan dan nilai pulangan biasa tidak dapat dihasilkan (mis., menyekat panggilan rangkaian), isytiharkan kaedah dengan lontaran InterruptedException dan biarkan pengecualian itu disebarkan.
  • Menangkap dan Menetapkan Bendera Terganggu: Jika kaedah tidak dapat menyelesaikan operasi atau mengembalikan hasil yang sah, tangkap pengecualian, tetapkan bendera yang terganggu, dan buang pengecualian masa jalan.

Contoh (Pendekatan Kedua)

void printSum(Server server) {
     try {
         int sum = computeSum(server);
         System.out.println("Sum: " + sum);
     } catch (InterruptedException e) {
         Thread.currentThread().interrupt();  // set interrupt flag
         System.out.println("Failed to compute sum");
     }
}
Salin selepas log masuk

Di sini, kaedah printSum tidak dapat menyelesaikan operasinya jika terganggu, jadi ia menangkap InterruptedException, menetapkan gangguan bendera, dan mencetak mesej alternatif.

Atas ialah kandungan terperinci Bagaimanakah InterruptedExceptions Harus Dikendalikan di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan