returnType method_name(paramList) throws Exception 1,Exception2,…{…}
import java.io.FileInputStream; import java.io.IOException; public class Test04 { public void readFile() throws IOException { // 定义方法时声明异常 FileInputStream file = new FileInputStream("read.txt"); // 创建 FileInputStream 实例对象 int f; while ((f = file.read()) != -1) { System.out.println((char) f); f = file.read(); } file.close(); } public static void main(String[] args) { Throws t = new Test04(); try { t.readFile(); // 调用 readFHe()方法 } catch (IOException e) { // 捕获异常 System.out.println(e); } } }以上代码,首先在定义 readFile() 方法时用 throws 关键字声明在该方法中可能产生的异常,然后在 main() 方法中调用 readFile() 方法,并使用 catch 语句捕获产生的异常。
public class OverrideThrows { public void test() throws IOException { FileInputStream fis = new FileInputStream("a.txt"); } } class Sub extends OverrideThrows { // 子类方法声明抛出了比父类方法更大的异常 // 所以下面方法出错 public void test() throws Exception { } }上面程序中 Sub 子类中的 test() 方法声明抛出 Exception,该 Exception 是其父类声明抛出异常 IOException 类的父类,这将导致程序无法通过编译。
throw ExceptionObject;
throw new String("拋出异常"); // String类不是Throwable类的子类
import java.util.Scanner; public class Test05 { public boolean validateUserName(String username) { boolean con = false; if (username.length() > 8) { // 判断用户名长度是否大于8位 for (int i = 0; i < username.length(); i++) { char ch = username.charAt(i); // 获取每一位字符 if ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { con = true; } else { con = false; throw new IllegalArgumentException("用户名只能由字母和数字组成!"); } } } else { throw new IllegalArgumentException("用户名长度必须大于 8 位!"); } return con; } public static void main(String[] args) { Test05 te = new Test05(); Scanner input = new Scanner(System.in); System.out.println("请输入用户名:"); String username = input.next(); try { boolean con = te.validateUserName(username); if (con) { System.out.println("用户名输入正确!"); } } catch (IllegalArgumentException e) { System.out.println(e); } } }如上述代码,在 validateUserName() 方法中两处拋出了 IllegalArgumentException 异常,即当用户名字符含有非字母或者数字以及长度不够 8 位时。在 main() 方法中,调用了 validateUserName() 方法,并使用 catch 语句捕获该方法可能拋出的异常。
请输入用户名: administrator@# java.lang.IllegalArgumentException: 用户名只能由字母和数字组成!
请输入用户名: admin java.lang.IllegalArgumentException: 用户名长度必须大于 8 位!throws 关键字和 throw 关键字在使用上的几点区别如下:
本文链接:http://task.lmcjl.com/news/10746.html