Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

บล็อก catch ที่ไม่สามารถเข้าถึงได้ใน Java คืออะไร


กลุ่มคำสั่งที่ควบคุมไม่สามารถเข้าถึงได้ ไม่ว่าในกรณีใดสามารถเรียกได้ว่าเป็น บล็อกที่ไม่สามารถเข้าถึงได้ . Java ไม่รองรับบล็อกที่ไม่สามารถเข้าถึงได้ บล็อก catch ที่กล่าวถึงด้วยการอ้างอิง คลาสข้อยกเว้นควรและต้องอยู่ล่าสุดเสมอ จับบล็อกเพราะ ข้อยกเว้น คือ ซูเปอร์คลาส ของข้อยกเว้นทั้งหมด เมื่อเราเก็บบล็อก catch ไว้หลายอัน ลำดับของบล็อก catch จะต้องมาจากเฉพาะมากที่สุดไปหาทั่วไปมากที่สุด . เช่น คลาสย่อยของ Exception ต้องมาก่อนและซูเปอร์คลาสในภายหลัง หากเราเก็บ superclasses ไว้ก่อนและ subclasses ในภายหลัง คอมไพเลอร์จะ โยนข้อผิดพลาด catch block ที่ไม่สามารถเข้าถึงได้ .

ไวยากรณ์

try {
   // statements
} catch(Exception e) {
   System.out.println(e);
} catch(NumberFormatException nfe) { //unreachable block. Not supported by Java, leads to an error.
   System.out.println(nfe);
}

คำสั่ง catch สามารถเข้าถึงได้โดยคอมไพเลอร์หากทั้งสองเงื่อนไขต่อไปนี้เป็นจริง

  • ข้อยกเว้นที่ตรวจสอบแล้วซึ่งส่งอยู่ในบล็อกการลองสามารถกำหนดให้กับพารามิเตอร์ของ C ได้
  • ไม่มี catch clause ก่อนหน้านี้ที่มีประเภทพารามิเตอร์เท่ากับหรือ supertype ของประเภทพารามิเตอร์ของ C

ส่วนคำสั่งจับถือว่าสามารถเข้าถึงได้โดยคอมไพเลอร์ไม่สามารถเข้าถึงได้หากทั้งสองเงื่อนไขต่อไปนี้เป็นจริง

  • พารามิเตอร์ catch clause ประเภท E ไม่มีข้อยกเว้นที่ไม่ได้ตรวจสอบ
  • ข้อยกเว้นทั้งหมดที่อยู่ในบล็อกการลองซึ่งมีประเภทย่อย (เข้มงวด) ของ E ได้รับการจัดการโดยคำสั่งคำสั่ง catch ก่อนหน้านี้

ตัวอย่าง

public class UnreachableBlock{
   public static void main(String[] args) {
      try {
         int i = Integer.parseInt("abc"); //This statement throws NumberFormatException
      } catch(NumberFormatException nfe) {
         System.out.println("This block handles NumberFormatException");
      } catch(Exception e) {
         System.out.println("This block handles all exception types");
      } catch (Throwable t) {
         System.out.println("Throwable is super class of Exception");
      }
   }
}

ผลลัพธ์

This block handles NumberFormatException