throw和throws的區別和聯系


    突然發現今天詩興大發,看來又得寫點內容了。

   throw和throws對於Java程序員而言它們真的不是很陌生。但對於我這樣的選手而言一提到它們的區別和聯系就蒙圈了...

   為了以后不蒙圈,今天就研究一下吧~~

   如果有不足的地方歡迎批評指正...

   1)throws

    對於throws關鍵字而言一般用於拋出編譯時的異常,如果某個異常是編譯是異常,那么這個異常就需要捕獲(try{}catch{}finally{})

    或者拋出(throws)。否者的話是無法通過編譯的。

    這里再簡單講講二者的區別

    對於try{}catch{}finally{}而言,相應的異常已經在程序里面捕獲。相應的catch中也已經處理了相關的異常,不會再向上拋出。上層

    調用者是不需要進行任何處理的。

    對於throws而言,當前程序不會對異常進行任何處理,如果出現異常的話,僅僅拋出而不做處理,對應的處理需要上層來負責。對應的

    上層調用者必須處理這個異常或者繼續向上拋出對應的異常。

    說白了以公司為例:

    客戶給開發提了一個bug,如果開發人員能夠處理(try{}catch{}finally{}),就自己處理了,不會在告訴項目經

    理。但是如果開發處理不了,開發就會找項目經理(開發的throws)如果項目經理能夠處理,就搞定(try{}catch{}finally{}),如果

    搞不定 就找總經理(項目經理的throws)反正最終為題會被處理的(不敢不處理啊,客戶是上帝啊~~哈哈)

     下面是一個throws的簡單例子:

    

package com.yonyou.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/**
 * 測試類
 * @author 小浩
 * @創建日期 2015-3-2
 */

public class Test{
	public static void main(String[] args) throws IOException {
		  File file=new File("C:\text.txt");
		  FileInputStream fis=new FileInputStream(file);
		  byte []b=new byte[10];
		  while(fis.read(b)!=-1)
		  {
			  System.out.println(new String(b));
		  }
	}    
}

 

  

 

   

    2)throw

      對於throw而言一般是用在拋出一個異常對象,使用的不是很多。具體的看下面的例子:

       

package com.yonyou.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * 測試類
 * @author 小浩
 * @創建日期 2015-3-2
 */

public class Test{
	public static void main(String[] args) throws MyException{
		  File file=new File("C:\text.txt");
		  FileInputStream fis;
		 try {
		  fis = new FileInputStream(file);
		  byte []b=new byte[10];
		  while(fis.read(b)!=-1)
		  {
			  System.out.println(new String(b));
		  }
		} catch (IOException e) {
			//處理捕獲的異常,並拋出一個異常對象
			throw new MyException("龍不吟,虎不嘯");
		}
}
}


/**
 * 自定義異常
 * @author 小浩
 * @創建日期 2015-3-2
 */
class MyException extends Exception{

	private static final long serialVersionUID = 1L;
	 
	public MyException(String info){
		super(info);
	}
	
}

 運行的結果為:

    Exception in thread "main" com.yonyou.test.MyException: 龍不吟,虎不嘯   //用戶自定義的異常對象
    at com.yonyou.test.Test.main(Test.java:27)

    

    好吧今天就先到這里吧~~ See You

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM