日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java高级语法笔记-自定义异常类

發布時間:2025/3/15 java 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java高级语法笔记-自定义异常类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自定義異常類
繼承Exception,自定義異常類: 異常類要能夠描述錯誤信息
比如,非法字符異常 IllegalCharException應該把非法字符的位置帶上。


throws多種異常
throws用于聲明本函數可能產生的異常的種類
void parse(String s) throws IllegalCharException,BadFromatException{
}
各異常類以逗號分隔


異常的匹配
根據拋出的異常對象的類型,從前往后匹配catch語句。
- 若匹配成功,則其他的catch不再匹配.
- 若全不匹配,則繼承向上層函數拋出。


異常的匹配
怎么才算是匹配成功?假設拋出的對象類型為EA
catch(EX e)
{
}
如果EA與EX類型相同,或是EX的子類,則匹配成功.怎么抓獲所有類型的異常?
catch( Exception e)
{
}

由于Exception類是所有異常的父類,所以用這個肯定能捕獲異常。(相當于default處理)

代碼如下:

BadFormatException.java

package my;public class BadFormatException extends Exception {String reason;public BadFormatException(String reason) {this.reason=reason;}@Overridepublic String getMessage(){return "格式錯誤("+reason+")";} }


BadRangeException.java

package my;public class BadRangeException extends Exception {String reason;public BadRangeException(String reason) {this.reason=reason;}@Overridepublic String getMessage(){return "范圍錯誤("+reason+")";}}


Date.java

package my;public class Date {public int year,month,day;public void parse(String dateStr) throws IllegalCharException,BadFormatException,BadRangeException{//檢測非法字符for(int i=0;i<dateStr.length();i++) {char ch=dateStr.charAt(i);if(ch>='0'&&ch<='9') ;else if(ch=='-');else throw new IllegalCharException(i);}//檢測分割符int p1=dateStr.indexOf("-");if(p1<0) throw new BadFormatException("找不到第1個橫杠!");int p2=dateStr.indexOf("-",p1+1);if(p2<0) throw new BadFormatException("找不到第2個橫杠!");//檢測年月日的長度String s1=dateStr.substring(0, p1);String s2=dateStr.substring(p1+1, p2);String s3=dateStr.substring(p2+1);if(s1.length()!=4) throw new BadFormatException("格式不對:年份錯誤!");if(s2.length()!=1&&s2.length()!=2) throw new BadFormatException("格式不對:月份錯誤!");if(s3.length()!=1&&s3.length()!=2) throw new BadFormatException("格式不對:日份錯誤!");this.year=Integer.valueOf(s1);this.month=Integer.valueOf(s2);this.day=Integer.valueOf(s3);//有效性檢測if(month<0||month>12) throw new BadRangeException("數據無效:月份不能為"+month);if(day<0||day>31) throw new BadRangeException("數據無效:日期不能為"+day);}@Overridepublic String toString(){return year+"年"+month+"月"+day+"日";} }
HelloWorld.java

package my;public class HelloWorld {public static void main(String[] args){ Date d=new Date();try {d.parse("2016B-12-1");System.out.println("日期為:"+d.toString());}catch(IllegalCharException e) {System.out.println(e.getMessage());}catch(BadFormatException e) {System.out.println(e.getMessage());}catch(BadRangeException e) {System.out.println(e.getMessage());}catch(Exception e) {}} }
IllegalCharException.java

package my;public class IllegalCharException extends Exception {int position=0;public IllegalCharException(int pos) {this.position=pos;}@Overridepublic String getMessage(){return "非法字符("+position+")";}public int getPosition() {return position;} }
運行結果如下:




總結

以上是生活随笔為你收集整理的Java高级语法笔记-自定义异常类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。