Contents
16.7. throw与显式抛出异常¶
throws语句是在方法的声明中使用来抛出异常, 而throw语句是在方法体内使用抛出异常
HelloWorld6.java
package com.a51cto;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.xml.crypto.Data;
public class HelloWorld6 {
public static void main(String[] args) {
try {
Date date = readDate();
System.out.println("读取的日期 = " + date);
} catch (MyException e) {
System.out.println("处理MyException.........");
e.printStackTrace();
}
}
public static Date readDate() throws MyException {
// 自动资源管理
try (FileInputStream readfile = new FileInputStream("readme.txt");
InputStreamReader ir = new InputStreamReader(readfile);
BufferedReader in = new BufferedReader(ir)) {
// 读取文件中的一行数据
String str = in.readLine();
if (str == null) {
return null;
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(str);
return date;
}catch (FileNotFoundException e) {
// TODO: handle exception
throw new MyException(e.getMessage());
}catch (IOException e) {
// TODO: handle exception
throw new MyException(e.getMessage());
}catch (ParseException e) {
// TODO: handle exception
System.out.println("处理ParseException........");
e.printStackTrace();
}
return null;
}
}
/*
处理MyException.........
com.a51cto.MyException: readme.txt (系统找不到指定的文件。)
at com.a51cto.HelloWorld6.readDate(HelloWorld6.java:44)
at com.a51cto.HelloWorld6.main(HelloWorld6.java:18)
*/
YiChang12.java
package com.a51work.cn;
import java.io.IOException;
import java.net.ServerSocket;
public class YiChang12 {
// throws语句是在方法的声明中使用
public static void main(String[] args) throws IOException {
try {
// 一个可能出现捕获异常的语句
ServerSocket s = new ServerSocket(8080);
}catch (Exception e){
// throw是在方法体内使用用来抛出异常
throw e;
}
}
}