Java中的Checked与Unchecked Exceptions

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

Java中的Checked与Unchecked Exceptions

在Java中,有两种例外:

1)checked:是在编译时检查的异常。如果方法中的某些代码抛出检查异常,那么该方法必须处理异常,或者必须使用throws关键字指定异常。

例如,考虑下列Java程序,该程序在locatiobn“C:\ test \ a.txt”处打开文件并打印它的前三行。该程序不编译,因为main()函数使用FileReader()和FileReader()引发检查异常FileNotFoundException。它还使用readLine()和close()方法,并且这些方法还会引发检查异常IOException

import java.io.*;

class Main {
    public static void main(String[] args) {
        FileReader file = new FileReader("C:\test\a.txt");
        BufferedReader fileInput = new BufferedReader(file);
        
        // Print first 3 lines of file "C:\test\a.txt"
        for (int counter = 0; counter < 3; counter++) 
            System.out.println(fileInput.readLine());
        
        fileInput.close();
    }
}

输出:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - 
unreported exception java.io.FileNotFoundException; must be caught or declared to be 
thrown
	at Main.main(Main.java:5)

要修复上述程序,我们需要使用throws指定异常列表,或者我们需要使用try-catch块。我们在下面的程序中使用了throws。由于FileNotFoundException是IOException的子类,因此我们可以在抛出列表中指定IOException并使上述程序无编译器错误。

import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        FileReader file = new FileReader("C:\test\a.txt");
        BufferedReader fileInput = new BufferedReader(file);
        
        // Print first 3 lines of file "C:\test\a.txt"
        for (int counter = 0; counter < 3; counter++) 
            System.out.println(fileInput.readLine());
        
        fileInput.close();
    }
}

输出:文件的前三行“C:\ test \ a.txt”

2)未选中是在编译时未检查的异常。在C ++中,所有异常都是未选中的,因此编译器不会强制它处理或指定异常。程序员要文明,并指明或捕捉例外。
在Error和RuntimeException类中的Java异常是未经检查的异常,在throwable下的其他所有内容都被检查。

                   +-----------+
		   | Throwable |
                   +-----------+
                    /         \
		   /           \
          +-------+          +-----------+
          | Error |          | Exception |
          +-------+          +-----------+
	   /  |  \           / |        \
         \________/	  \______/    	 \
			                +------------------+
	unchecked	 checked	| RuntimeException |
					+------------------+
					  /   |    |      \
					 \_________________/
					   
					   unchecked

考虑下面的Java程序。它编译得很好,但运行时抛出ArithmeticException。编译器允许它编译,因为ArithmeticException是一个未经检查的异常。

class Main {
   public static void main(String args[]) {
      int x = 0;
      int y = 10;
      int z = y/x;
  }
}

输出:

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at Main.main(Main.java:5)
Java Result: 1
  •   本文标题:Java中的Checked与Unchecked Exceptions - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/4199.html
      微信返利机器人
      免费:淘宝,京东,拼多多优惠券
      腾讯,爱奇艺,优酷的VIP视频免费解析,免费看
      即刻扫描二维码,添加微信机器人!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注