Java常見異常和錯誤

來源:酷知科普網 2.9W

總結JAVA常見的異常和錯誤。

操作方法

(01)1、 在某一路徑下執行編譯好的class檔案出錯。異常如下:E:liwy>java Test98Exception in thread "main" assDefFoundError: Test98如果出現了以上錯誤提示,常見問題有如下兩種:1 大小寫寫錯了, 2 路徑不正確。

Java常見異常和錯誤

(02)2、陣列錯誤,訪問不存在的陣列,陣列超出繫結,程式碼如下:public class ArrayDemo{public static void main(String args[]){int array[] = null; //宣告陣列array = new int[3]; //為陣列開闢空間,大小為3for(int i=0;i<th;i++){tln("array["+i+"]="+i);}//訪問陣列沒有開闢的下標,這時會報異常tln("array[3]="+array[3]);}}異常如下:array[0]=0array[1]=1array[2]=2Exception in thread "main" yIndexOutOfBoundsException: 3at ()以上就是陣列的索引超出繫結,就是表示陣列越界。

(03)3、某個類沒有例項化,訪問類屬性時,出現空指標異常class Person{String name ;  // 宣告姓名屬性int age ;   // 宣告年齡屬性public void tell(){ // 取得資訊tln("姓名:" + name + ",年齡:" + age) ;}};public class ClassDemo03{public static void main(String args[]){Person per = null ;  // 宣告物件//per = new Person() ; // 例項化物件 = "張三" ;  // 為姓名賦值 = 30 ;   // 為年齡賦值() ;   // 呼叫方法,列印資訊}};異常如下:Exception in thread "main" PointerExceptionat ()

(04)4、錯誤的多型,出現異常class A{     // 定義類Apublic void fun1(){  // 定義fun1()方法tln("A --> public void fun1(){}") ;}public void fun2(){1() ;  // 呼叫fun1()方法}};class B extends A{public void fun1(){  // 此方法被子類覆寫了tln("B --> public void fun1(){}") ;}public void fun3(){tln("B --> public void fun3(){}") ;}};public class PolDemo03{public static void main(String asrgs[]){A a = new A() ;   // 例項化了一個父類物件B b = (B)a ;  // 發生了向下轉型關係1() ;2() ;3() ;}};異常如下:Exception in thread "main" sCastException: Aat ()

(05)5、兩個數字相除,被除數為0,出現異常public class ExceptionDemo01{public static void main(String args[]){tln("********** 計算開始 ***********") ;int i = 10 ;  // 定義整型變數int j = 0 ;   // 定義整型變數int temp = i / j ; // 此處產生了異常tln("兩個數字相除的結果:" + temp) ;tln("********** 計算結束 ***********") ;}};異常如下:********** 計算開始 ***********Exception in thread "main" hmeticException: / by zeroat (:6)

(06)6、兩個數字相除,輸入兩個引數,分別為字母a 和b,出現異常,數字格式化出問題public class ExceptionDemo04{public static void main(String args[]){tln("********** 計算開始 ***********") ;int i = 0 ;  // 定義整型變數int j = 0 ;   // 定義整型變數try{String str1 = args[0] ;  // 接收第一個引數String str2 = args[1] ;  // 接收第二個引數i = eInt(str1) ; // 將第一個引數由字元串變為整型j = eInt(str2) ; // 將第二個引數由字串變為整型int temp = i / j ; // 此處產生了異常tln("兩個數字相除的結果:" + temp) ;tln("----------------------------") ;}catch(ArithmeticException e){ // 捕獲算術異常tln("出現異常了:" + e) ;}tln("********** 計算結束 ***********") ;}};異常如下:********** 計算開始 ***********Exception in thread "main" erFormatException: For input string: "a"at nputString()at eInt()at eInt()at (

(07)7、兩個數字相除,輸入兩個引數,如果兩個引數什麼也不輸入,出現異常,陣列超出繫結。異常如下:********** 計算開始 ***********Exception in thread "main" yIndexOutOfBoundsException: 0at (:7)

(08)7、assert斷言的使用,當斷言結果不對出現異常。public class Test{public static void main(String args[]){int i[] = {1,2,3};   // 陣列長度為3assert th==0;  // 此處斷言陣列長度為0}}異常如下:D:d程式碼>java -ea TestException in thread "main" rtionErrorat (:5)l 斷言需要在執行時需要加上“-ea”,如上java –ea 類名。

熱門標籤