黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Java面向對象
Java異常
Java數組
Java常用類
Java集合
Java IO流
Java線程
Java反射
Socket編程
Java注解開發
Java GoF設計模式
HashMap
Java內存模型
Java線性表

Java異常處理

對于受檢異常在編譯階段必須進行預處理, 預處理方法有兩種:

● try..catch捕獲處理

● throws拋出處理

try…catch捕獲處理

語法:

try{

對可能產生異常的代碼進行檢視

try代碼塊中的某條語句一旦產生了異常,程序就立即跳轉到catch子句執行, try代碼塊后面的代碼不再執行

try代碼塊中, 可能會有多條語句有受檢異常需要預處理, 可以通過多個catch子句分別捕獲

}catch( 異常類型1    e1){

捕獲異常類型1的異常, 捕獲了異常,在開發階段, 一般的預處理方式就是把異常打印到屏幕上, 程序員可以根據異常信息進行程序調試

e1.printStackTrace();   //每個異常都有這個方法

}catch( 異常類型2    e2){

如果catch子句捕獲的異常有繼承關系, 如果想單獨對異常進行預處理, 應該先捕獲子異常, 再捕獲父異常, 或者直接捕獲一個父異常

}finally{

finally子句不管是否有異常產生,總是會執行

經常在finally子句中釋放系統資源

}

package com.wkcto.chapter02.demo01;

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

/**
 * 演示異常的捕獲處理
 * 		如果沒有捕獲異常, 系統會中斷,  對產生 的異常進行捕獲處理后, 程序不會中斷 ,會繼續向下執行
 * 異常處理的作用:
 * 		提高程序的健壯性, 魯棒性(Robust)
 * 
 * @author 蛙課網
 *
 */
public class Test03 {

	public static void main(String[] args) {
		
		try{
			FileInputStream fis = new FileInputStream("d:/abc.txt");  //構造方法有受檢異常FileNotFoundException需要預處理
			System.out.println("在當前程序與指定的文件之間建立了流通道, ");
			
			fis.read();		//read()方法有受檢異常IOException需要預處理
			System.out.println("從文件中讀取了一個字節");
			
			fis.close();	//close()方法有受檢異常IOException需要預處理
			System.out.println("文件讀取完后,需要關閉流通道");
		}catch (FileNotFoundException e) {
			// 捕獲文件未找到異常
			e.printStackTrace(); 		//開發時,一般把異常打印到屏幕上
			//捕獲了產生的異常, 程序沒有中斷, 還繼續向下執行
		}catch (IOException e) {
			// 捕獲IOException異常
			// FileNotFoundException 繼承了 IOException, 如果需要單獨處理, 應該先捕獲子異常 ,再捕獲父異常
			// 或者, 不需要單獨處理時, 直接捕獲父異常即可
		}
		
		System.out.println("main...end....");
	}

}

finally子句總是會執行

package com.wkcto.chapter02.demo01;

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

/**
 * finally子句
 * 	不管是否產生異常, finally子句總是會執行, 經常用來釋放系統資源
 * @author 蛙課網
 *
 */
public class Test04 {

	public static void main(String[] args) {
		
		FileInputStream fis = null; 
		try{			//try代碼塊,對可能產生異常的代碼進行檢視
			 fis = new FileInputStream("d:/abc.txt");  //構造方法有受檢異常FileNotFoundException需要預處理
			System.out.println("在當前程序與指定的文件之間建立了流通道, ");
			
			fis.read();		//read()方法有受檢異常IOException需要預處理
			System.out.println("從文件中讀取了一個字節");			
						//	通過catch子句捕獲產生的異常
		}catch (FileNotFoundException e) {
			// 捕獲文件未找到異常
			e.printStackTrace(); 		//開發時,一般把異常打印到屏幕上
			//捕獲了產生的異常, 程序沒有中斷, 還繼續向下執行
		}catch (IOException e) {
			// 捕獲IOException異常
			// FileNotFoundException 繼承了 IOException, 如果需要單獨處理, 應該先捕獲子異常 ,再捕獲父異常
			// 或者, 不需要單獨處理時, 直接捕獲父異常即可
		}finally {
			System.out.println("finally子句,不管是否產生異常,總是會執行, 經常在finally子句中釋放系統資源");
			//可以在finally子句中關閉流通道
			if ( fis != null ) {
				try {
					fis.close();		//close()方法有受檢異常IOException需要預處理
				} catch (IOException e) {
					e.printStackTrace();
				}	
				System.out.println("文件讀取完后,需要關閉流通道");				
			}
		}
		
		System.out.println("main...end....");
	}

}
package com.wkcto.chapter02.demo01;
/**
 * finally總是會執行
 * 	1)try/catch/finally子句都不能單獨使用, 可以try..catch.., 也可以try...finally, 也可以try...catch..finally
 * 	2)final/finalize/finally的區別
 * @author 蛙課網
 *
 */
public class Test05 {

	public static void main(String[] args) {
		int num = mm(10);
		System.out.println( num ); 			//10
	}

	public static int mm( int xx ) { 		//xx = 10
		try {
			return xx;
		} finally {
			xx++;
		}
		/*
		 * 程序執行到return xx;語句時, 并沒有立即執行return語句, 而是把xx變量的值保存起來
		 * 然后執行finally子句, xx的值加1變為了 11
		 * 最后再執行return語句, 返回的不是xx變量現在的值, 而保存的值10給返回了
		 */
	}
}

 

throws拋出處理

package com.wkcto.chapter02.demo01;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
/**
 * throws拋出處理
 * @author 蛙課網
 *
 */
public class Test06 {
	
	//在定義main()方法時,可以拋出異常, main的異常拋出給JVM
	//JVM默認的處理方式: 中斷程序, 打印異常信息
//	public static void main(String[] args) throws FileNotFoundException {
	public static void main(String[] args)  {
		System.out.println("main方法中調用m1()方法");
		try {
			m1();		//拋出m1()拋出的異常, 這個異常不會繼續上拋了, 程序也不會中斷,繼續向下執行
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		System.out.println("main方法結束....");
	}

	//如果m1()方法 在定義時通過throws聲明了一個異常, 就是受檢異常, 在調用m1()方法時也需要對該異常進行預處理
	//誰調用m1()方法, 誰負責處理該異常
	private static void m1() throws FileNotFoundException {
		System.out.println("m1方法開始執行, 調用了m2()方法 ");
		m2();   //在調用m2()方法, 需要對m2()的受檢異常進行預處理
		System.out.println("m1方法結束 ......");
	}

	//在定義方法時, 如果方法體中的某條語句有受檢異常需要預處理, 可以捕獲處理, 還可以拋出處理
	//在方法的定義位置通過throws關鍵字聲明拋出異常, 在m2()定義時通過throws聲明的異常 就是受檢異常
	//誰調用m2()方法, 誰負責處理該異常
	private static void m2() throws FileNotFoundException {
		System.out.println("m2方法調用 FileInputStream類的構造方法");
		FileInputStream fis = new FileInputStream("d:/abc.txt");  	//構造方法有受檢異常需要預處理
		System.out.println("m2.結束");
	}

}

異常處理可以進行捕獲,也可以拋出, 如何選擇?

● 在定義方法時, 如果方法體中某條語句有受檢異常需要預處理, 可以選擇捕獲處理,也可以選擇拋出處理。

● 在調用方法時, 如果被調用的方法有受檢異常需要預處理, 一般情況下是進行捕獲處理。

● 定義方法時,拋出的異常,是拋出給調用者, 通過拋出異常,提醒方法的調用者,可能有異常發生, 調用者需要對這個異常進行預處理

● 在定義方法時, 如果方法體中通過throw語句拋出了一個異常對象, 所在的方法應該通過throws聲明該異常

全部教程
主站蜘蛛池模板: 黑丝袜照片| 日本黄大片 在线播放 | 波多野吉衣在线多野结衣 | 无遮挡污视频 | 国产a v高清一区二区三区 | 免费中文字幕视频 | 免费看黄网站在线 | 深夜在线网址 | 日本欧美国产精品 | 免费国产黄网站在线观看 | av小说网站 | 额去鲁97在线观看视频 | 日韩四区| 色老头综合免费视频 | 日本黄色链接 | 成人精品视频一区二区三区 | 一级aaa级毛片午夜在线播放 | 国产一卡二卡三卡 | 成人欧美日本免费观看 | 欧美成人香蕉网在线观看 | 国产亚洲精品综合在线网址 | 久久久久国产一级毛片高清片 | 伊人久久精品成人网 | 午夜亚洲视频 | 91欧洲在线视精品在亚洲 | 亚洲午夜精品久久久久久抢 | 一个人看免费视频www在线观看 | 欧美乱淫| 亚洲一级毛片在线观 | 欧美在线国产 | 在线成人毛片 | 亚洲va | 天天操天天射天天舔 | 黄免费在线 | 韩国日本三级在线观看 | 天天爱夜夜爱 | 国产日产久久高清欧美一区 | 噜噜噜噜噜噜色 | 香蕉视频一级片 | 日韩精品视频免费在线观看 | 欧美一级黄色片 |