classcastexception异常_优雅的异常处理
3.3 最近我們遇到過的異常
System.out.println(str.length());//java.lang.NullPointerException
System.out.println(arr[arr.length]);//java.lang.ArrayIndexOutOfBoundsException: 2
sdf.parse("fsdfsdf");//ParseException
5.ClassCastException:類型轉換異常
異常的分類
------------------------------------------------------------------------------------------------------------
異常的處理方式
5.1 異常的處理方式
5.2 自己處理[捕獲異常]
try-catch的語法結構及鏈式結構多異常處理方式
- 語法:
try{
//可能產生異常的代碼
}catch(捕獲的異常類型 e){//e是形式參數
//該異常捕獲之后要做的操作
}catch(捕獲的異常類型 e){//e是形式參數
//該異常捕獲之后要做的操作
}finally{
//異常發生之后一定會執行到的語句塊:
//①流資源關閉②釋放鎖
}
語句塊執行順序:
5.2異常信息處理方式二拋出異常
- 語法結構:方法后面使用throws 需要拋出的異常類型
示例:
void eat() throws ArithmeticException, CloneNotSupportedException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");
//sdf.parse("fsdfsd");
}
- 拋出異常的注意事項:
①方法拋出運行時異常,在方法頭可以不用拋出異常
②方法拋出編譯時異常:方法必須處理異常,或者拋出同類異常,或者拋出異常該異常的父類類型異常
獲得異常信息的方式
異常捕獲分析
獲取信息的方式
方式1:System.out.println(e.getMessage());//e.getMessage()
方式2:System.out.println(e);//e.toString()
方式3:e.printStackTrace();//打印異常信息
finally結構
public static void main(String[] args) {
System.out.println(eat());;
}
static int eat(){
int i = 10;
try{
i = 20;
System.exit(0);
System.out.println(1/0);
return i;
}catch(Exception e){
e.printStackTrace();
i = 30;
return i;
}finally{
i = 40;
return i;
}
}
主動向外 拋出【產生異常】
- 方法內部主動創建異常拋出:throw new SelfException("賬戶已經存在,請重新輸入");
賬號登陸示例:
static String[] arr = {"周周","黃黃"};
public static void main(String[] args) throws SelfException {
login("周周");
}
//主動產生異常向外拋出
static void login(String name) throws SelfException{
for(int i = 0;i<=arr.length-1;i++){
if(name.equals(arr[i])){
throw new SelfException("賬戶已經存在,請重新輸入");//自己在方法內部寫一個異常,拋出
}
}
System.out.println("恭喜你注冊成功");
}
throws 和 throw的區別
自定義異常
10.1 為什么需要自定義異常:
10.2 自定義異常的方式
public class SelfException extends Exception {
SelfException(String msg){
super(msg);
}
}
總結
以上是生活随笔為你收集整理的classcastexception异常_优雅的异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: convert.todatetime指定
- 下一篇: 客制化键盘键位修改_可以用很漂亮形容的一