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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java todo error_java基础-异常

發布時間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java todo error_java基础-异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

女神鎮樓

1、概述

異常是一個在程序執行期間發生的事件,他中斷了正在執行的程序的正常指令流。如空指針、數組溢出等。在java中,異常也作為類的實例的形式出現。當某一個方法中發生錯誤時,這個方法會創建一個對象,并且把他傳遞給正在運行的系統。這個對象就是異常對象。通過異常處理機制,可以將非正常情況下的處理代碼和程序的主邏輯分離,即在編寫代碼主流程的同時在其他地方處理異常。

代碼示例:

public classExceptionFirstExpression {public static voidmain(String[] args) {//>> TODO try 語句中如果發生了異常(Exception),那么程序會跳轉到catch語句。//>> TODO Java會將異常相關信息封裝在一個異常類的實例中,ex是指向這個異常實例的引用//>> TODO "處理"最簡單的方法,就是調用printStackTrace將異常信息輸出到控制臺//>> TODO catch語句執行完畢,程序會繼續向下順序執行

try{int[] arr = new int[1];

arr[1] = 9;

}catch(Exception ex) {int abc = 999;

ex.printStackTrace();

}try{

String str= "";

str.substring(9, 10);

}catch(Exception ex) {

ex.printStackTrace();

}

System.out.println("程序執行結束");

}

}

2、異常捕捉

為了保證程序有效的運行,需要對程序發生的異常進行相應的處理。如果某個方法拋出異常,即可以在當前方法中進行捕捉,然后進行處理,也可以將異常向上拋出,由方法調用者進行處理。java中異常捕獲結構是try、catch、finally三部分組成,其中try語句塊存放的是可能發生異常的java語句,catch程序塊在try語句塊之后,用來激發被捕獲的異常,finally是異常處理結構最后的執行部分,無論try語句塊如何退出,都會執行finally語句塊。

語法如下:

try{//程序代碼塊

}catch(Exceptiontype1 e){//對Exceptiontype1的處理

}catch(Exceptiontype2 e){//對Exceptiontype2的處理

}

...finally{//程序塊

}

1)try-catch語句塊

代碼示例:

public classTake {public static voidmain(String[] args) {try{ //try語句中包含可能出現異常的程序代碼

String str = "lili";

System.out.println(str+ "的年齡是:");int age = Integer.parseInt("22L");//數據類型轉換

System.out.println(age);

}catch (Exception e){//catch語句塊用來獲取異常信息

e.printStackTrace(); //輸出異常性質

}

System.out.println("程序結束");

}

}

實例分析:

程序最后還是輸出里“程序結束”的提示信息,沒有因為異常終止。可能出現異常的代碼,使用try-catch處理,當try代碼塊中的語句出現異常時,程序就會跳轉到catch代碼塊中執行,執行完之后,會繼續執行后面的代碼,而不會執行try中發生異常的語句后面的代碼。使得程序不會因為異常而影響整個程序的執行。

public classCallerExceptionAppMain {public static void main(String[] args) throwsMyException {//>> TODO catch 語句是根據異常類型匹配來捕捉相應類型的異常的。//>> TODO 如果類型不匹配,catch語句是不會執行的,異常會繼續拋出//>> TODO 也就是說,catch (Throwable )會捕捉到所有的異常,包括Error,建議最多只捕捉Exception//>> TODO 如果catch一個其實并沒有被拋出的checked exception,Java程序會報錯,因為Java明確的知道這個類型的異常不會發生//>> TODO 如果catch一個unchecked exception,Java程序不會報錯//>> TODO 如果throws一個其實并沒有被拋出的checked exception或者unchecked exception,Java程序不會報錯

Caller1 caller1 = newCaller1();

System.out.println("調用開始");

caller1.call2Exception();

System.out.println("調用結束");

}

}

2)finally語句塊

完整的異常處理語句一定包含finally語句塊,無論程序中有無異常發生,并且之間的try-catch無論是否順利執行完畢,都會執行finally語句。

public classTryCatchFinallyAppMain {private static int VAL = 0;public static voidmain(String[] args) {

System.out.println(withFinally());

System.out.println(VAL);

}private static intwithFinally() {int len = 0;try{

String s= null;//String s = "abc";

returns.length();

}catch(Exception ex) {//>> TODO 異常的處理:在有返回值的情況下,返回一個特殊的值,代表情況不對,有異常

len = -1;

System.out.println("執行catch里的return語句");returnlen;

}finally{//>> TODO 可以認為finally語句會在方法返回后,后面的方法開始前,會在return語句后//>> TODO 無論是因為return結束還是因為異常結束,finally語句都會執行

System.out.println("執行finally語句");//>> TODO finally里最好不要有return語句//return -2;//>> TODO finally里給return用的變量值賦值沒用//len = -2;

VAL= 999;

System.out.println("finally語句執行完畢");

}

}

}

3、java中常見的異常

4、自定義異常

用戶只需繼承Exception類即可自定義異常類。

自定義異常類的步驟:

1)創建自定義異常類。

2)在方法中通過throw關鍵字拋出異常對象。

3)如果在當前拋出異常的方法中處理異常,可以使用try-catch關鍵字捕獲并處理,否則就在方法的聲明處通過throws指名要拋出的異常,讓方法的調用者處理。

4)在出現異常方法的調用者中捕獲并處理。

代碼示例:

public classTran {//定義方法,拋出異常

static int avg(int number1,int number2) throwsMyException{if(number1 < 0 || number2<0){throw new MyException("不可使用負數");

}if(number1 > 100 || number2 > 100){throw new MyException("數值太大了");

}return (number1 + number2) /2;

}public static voidmain(String[] args) {try{int result = avg(102,105);

}catch(MyException e){

System.out.println(e);

}

}private static class MyException extendsException{publicMyException(String ErrorMessaage){super(ErrorMessaage);

}

}

}

5、在方法中拋出異常

1)使用throws關鍵字拋出異常

throws關鍵字通常被用在聲明方法時,用來指定方法可能拋出的異常,多個異常可以使用“,”分割。

代碼示例:

public classShoot {static void pop() throwsNegativeArraySizeException{//定義方法并拋出NegativeArraySizeException異常

int[] arr = new int[-3];

}public static voidmain(String[] args) {try{

pop();

}catch(NegativeArraySizeException e){

System.out.println("pop()方法拋出了異常");

}

}

}

使用throws拋出異常給上級時,如果不想處理,可以繼續向上拋出,但最終要有處理該異常的代碼。

2)使用throw關鍵字拋出異常

throw關鍵字通常用在方法體中,并拋出一個異常對象。程序在執行到throw時終止,他后面的語句都不執行。通過throw拋出異常后,如果想在上一級代碼中捕獲并處理異常,需要在拋出異常的方法中使用throws關鍵字在方法聲明時指明要拋出的異常。如果要捕獲throw拋出的異常,必須使用try-catch代碼塊。

代碼示例:

public class MyException extendsThrowable {

String message;publicMyException(String ErrorMessage){

message=ErrorMessage;

}publicString getMessage(){returnmessage;

}

}

public classCaptor {static int quotint(int x,int y) throwsMyException{if(y<0){

System.out.println("除數不能是負數");

}return x/y;

}public static voidmain(String[] args) {try{int result = quotint(3,-2);

}catch(MyException e){

System.out.println(e.getMessage());

}catch(ArithmeticException e){

System.out.println("除數不能為0");

}catch(Exception e){

System.out.println("程序發生了其他的異常");

}

}

}

實例分析:

實例中使用了多個catch語句來捕獲異常,如果將catch(Exception e)?代碼塊放在了最前面,將永遠也調用不到他后面的代碼塊,所以catch語句的順序不可調換。

6、運行時異常

RuntimeException異常時程序運行過程中產生的異常,java類庫中每個包都定義了異常類,所有這些類都是Throwable類的子類。Throwable類派生了兩個子類,分別是Exception類和Error類,Error類及其子類用來描述java運行系統中的內部錯誤,以及資源耗盡的錯誤,這類錯誤問題比較嚴重。Exception類稱為非致命性類,可以通過捕獲處理使程序繼續執行。Exception類又根據錯誤發生的原因,分為RuntimeException異常和除RuntimeException之外的異常。

7、異常的使用原則

java強制用戶去考慮程序的強健性和安全性,異常處理不應用來控制程序的正常流程,他的主要作用是捕獲程序運行時發生的錯誤,并進行相應的處理,遵循以下原則:

1)在當前方法聲明中使用try-catch方法捕獲異常

2)當一個方法被覆蓋時,覆蓋他的方法必須拋出相同的異常或者異常子類

3)如果父類拋出多個異常,則覆蓋方法必須拋出那些異常的一個子集,不能拋出新異常。

public classCallerRtExceptionAppMain {public static voidmain(String[] args) {

Caller1 caller1= newCaller1();

System.out.println("調用開始");try{

caller1.call2RTException();

}catch(MyRuntimeException ex) {//>> TODO 錯誤的演示!不應該使用異常做正常處理邏輯下的跳轉

System.out.println("凌波微步收到!");

}

System.out.println("調用結束");

}

}

8、接口中的異常

public class ImplIntfWithEx implementsIntfWithEx {

@Overridepublic void danger() throwsException {//>> TODO 接口中聲明了拋出異常,實現類中可以拋,也可以不拋。拋的話必須是接口聲明的類或其子類

throw new Exception("");

}

@Overridepublic voidsafe() {//>> TODO 接口中沒有聲明拋出異常,實現類中可以拋RuntimeException,也可以不拋。//>> TODO 如果拋 checked exception,就會出錯//>> TODO 可以選擇catch住 checked exception,然后將它封在RuntimeException里//throw new Exception();//throw new RuntimeException();

}

}

總結

以上是生活随笔為你收集整理的java todo error_java基础-异常的全部內容,希望文章能夠幫你解決所遇到的問題。

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