国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java 異常詳解及應(yīng)用實(shí)例

2019-11-26 13:13:54
字體:
供稿:網(wǎng)友

java  異常

 異常的使用實(shí)例(異常分類:Error(是由JVM調(diào)用系統(tǒng)底層發(fā)生的,只能修改代碼) 和 Exception(是JVM發(fā)生的,可以進(jìn)行針對性處理))

 1.如果一個(gè)方法內(nèi)可能出現(xiàn)異常,那么可以將異常通過throw的方式new 出相應(yīng)的異常類,并在方法上   聲明throws可能拋出的異常類拋給調(diào)用者,調(diào)用者可以進(jìn)行異常捕獲,或者繼續(xù)拋出異常由 上層調(diào)用者繼續(xù)處理,    如果整個(gè)過程都沒有將異常進(jìn)行任何處理,那么將由JVM虛擬機(jī)進(jìn)行默認(rèn)的處理 

2.調(diào)用者可以對異常進(jìn)行try()catch(){}的異常處理, 也可以繼續(xù)在方法后面throws該異常,catch代碼塊中    如果不處理也可以進(jìn)行throw該異常

 3.運(yùn)行時(shí)異常RuntimeException可以不進(jìn)行顯式的異常聲明

 4.如果父類中的方法拋出了異常,如果子類對方法進(jìn)行重寫后也拋出異常,那么該異常必須不能大于父類的異常類, 如果父類中方法沒有拋出異常,而子類中覆蓋的方法卻拋出了異常,那么此時(shí)只能進(jìn)行try catch來捕獲此異常,但是也可以將此異常在catch代碼塊中throw  new RuntimeExcetion()進(jìn)行拋出,這樣方法不用進(jìn)行throws聲明  

 5.很多時(shí)候異常并不需要調(diào)用者進(jìn)行處理,調(diào)用者不一定具有處理能力

 6.異常應(yīng)該包裝成上層調(diào)用者可以識(shí)別的異常類型,面向不同的調(diào)用者,報(bào)告不同的異常信息,否者調(diào)用者不知道如何處理該異常

    在開發(fā)中這點(diǎn)十分重要

  7.finally代碼塊中常常進(jìn)行資源的釋放及關(guān)閉操作,對于打開的資源應(yīng)該進(jìn)行反方向的關(guān)閉操作,因?yàn)橘Y源可能存在依賴性

  8.如果不進(jìn)行聲明異常,那么目的是不讓調(diào)用者進(jìn)行處理,讓調(diào)用者的程序停止,這樣必須修改錯(cuò)誤代碼

public class ExceptionDemo { public static void main(String[] args) { //OutOfMemoryError內(nèi)存溢出錯(cuò)誤, int[] i = new int[1024*1024*1024]; System.out.println(i[1]);  //ArrayIndexOutOfBoundsException索引越界異常 int[] s = new int[2]; System.out.println(s[2]);   Calc calc = new Calc();  //假如我們在這里捕獲異常 try {  calc.run(4, 0);  calc.run(4, -1); } catch (NegativeException e) {//必須先拋出異常的自定義子類  e.printStackTrace();  System.out.println(e.getMessage());  //throw e;//可以繼續(xù)將此異常拋出 } catch (ArithmeticException e){//拋出自定義異常類的父類  e.printStackTrace();  System.out.println(e.getMessage());  //throw e; } finally {  System.out.println("finally肯定會(huì)執(zhí)行到"); } //如果上面進(jìn)行了異常捕獲,那么代碼可以繼續(xù)執(zhí)行,否者代碼不能繼續(xù)執(zhí)行 System.out.println("可以執(zhí)行到!");  try {  calc.run(4, -1);   } catch (NegativeException e) {  e.printStackTrace();  System.out.println(e.getMessage());  return; } finally {  System.out.println("肯定會(huì)執(zhí)行的"); } System.out.println("執(zhí)行不到了");//執(zhí)行不到此行代碼  }}/** * 自定義異常 */class NegativeException extends ArithmeticException{ public NegativeException() { } public NegativeException(String msg) { super(msg); }}interface AA{ public abstract void method();}class Calc implements AA{ //ArithmeticException其實(shí)為運(yùn)行時(shí)異常(RuntimeException),即使不進(jìn)行throws聲明,也可以通過編譯 public int run(int m,int n)throws ArithmeticException,NegativeException{ if(n==0){  throw new ArithmeticException("除數(shù)不能為0"); }else if(n<0){  throw new NegativeException("除數(shù)不能為負(fù)數(shù)"); } int s = m/n; return s ; } @Override public void method() { try {  int p = 4/0; } catch (ArithmeticException e) {  e.printStackTrace();  throw new RuntimeException();//將異常繼續(xù)拋出為運(yùn)行時(shí)異常 } }}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 峡江县| 宜春市| 库伦旗| 冕宁县| 平武县| 延吉市| 关岭| 咸丰县| 遂川县| 南木林县| 镇原县| 前郭尔| 江口县| 嘉祥县| 延安市| 左贡县| 涪陵区| 吴旗县| 巴林右旗| 淳化县| 蓬安县| 鄯善县| 东港市| 丹东市| 台北市| 裕民县| 波密县| 岑巩县| 固始县| 昌都县| 津市市| 务川| 太仆寺旗| 乡城县| 富民县| 杂多县| 开封县| 宁乡县| 通山县| 滨州市| 阜康市|