throws
throws的作用是聲明拋出異常惫东,在方法聲明的位置上使用throws關鍵字向上拋出異常。例如下面程序演示了一般性異常祭示,編譯無法通過偷崩,需要對異常進行處理
import java.io.FileInputStream;
public classExceptionTest{
? ? publicstaticvoidmain(String[] args){
? ? ? ? //這句代碼的意思是創(chuàng)建文件輸入流,讀取文件帚呼,遇到不認識的類可以查看API? ? ? ??
FileInputStream fis = new FileInputStream("d:/jh.txt");
? ? }
}
可以使用throws將異常拋出
mport java.io.*;public classExceptionTest{
? ? publicstaticvoidmain(String[] args)throwsFileNotFoundException{
? ? ? ? //這句代碼的意思是創(chuàng)建文件輸入流掏缎,讀取文件? ? ? ? FileInputStream fis = new FileInputStream("d:/jh.txt");
? ? }
}
jvm是怎么知道這個地方容易出現(xiàn)問題呢?來看下FileInputStream的源碼
publicFileInputStream(String name)throwsFileNotFoundException{
? ? this(name != null ? new File(name) : null);
}
源碼里面在構造方法上拋出了FileNotFoundException萝挤,所以jvm知道御毅。
深入throws
其實使用throws拋出異常并不是真正的去處理異常,而是拋給其調用者去處理怜珍,比如你在工作中遇到問題了端蛆,交給了你的領導去解決,領導如果也不想解決就交給他的領導去解決酥泛。在上面程序里面今豆,我們拋出了異常,最后是交給了jvm解決柔袁,jvm的解決方式就是將錯誤信息打印至控制臺呆躲,然后關閉程序。
下面示例展示了將異常拋出的情況
import java.io.*;
public classExceptionTest04{
? ? publicstaticvoidmain(String[] args)throwsFileNotFoundException{
? ? ? ? //拋給調用者捶索,如果都不進行處理的話插掂,最終拋給了main方法? ? ? ? m1();
? ? }
? ? publicstaticvoidm1()throwsFileNotFoundException{
? ? ? ? m2();
? ? }
? ? publicstaticvoidm2()throwsFileNotFoundException{
? ? ? ? m3();
? ? }
? ? //向上拋出異常? ? publicstaticvoidm3()throwsFileNotFoundException{
? ? ? ? FileInputStream fis = new FileInputStream("c:/jh.txt");
? ? }
}
這里不是說使用throws是不好,使用throws主要意圖是暴露問題,如何解決讓調用者去決定