Java常见异常和错误

总结JAVA常见的异常和错误。

操作方法

  • 01

    1、 在某一路径下执行编译好的class文件出错。 异常如下: E:\liwy>java Test98 Exception in thread "main" java.lang.NoClassDefFoundError: Test98 如果出现了以上错误提示,常见问题有如下两种:1 大小写写错了, 2 路径不正确。

  • 02

    2、数组错误,访问不存在的数组,数组超出绑定,代码如下: public class ArrayDemo { public static void main(String args[]){ int array[] = null; //声明数组 array = new int[3]; //为数组开辟空间,大小为3 for(int i=0;i<array.length;i++){ System.out.println("array["+i+"]="+i); } //访问数组没有开辟的下标,这时会报异常 System.out.println("array[3]="+array[3]); } } 异常如下: array[0]=0 array[1]=1 array[2]=2 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at ArrayDemo.main(ArrayDemo.java:11) 以上就是数组的索引超出绑定,就是表示数组越界。

  • 03

    3、某个类没有实例化,访问类属性时,出现空指针异常 class Person{ String name ;  // 声明姓名属性 int age ;   // 声明年龄属性 public void tell(){ // 取得信息 System.out.println("姓名:" + name + ",年龄:" + age) ; } }; public class ClassDemo03{ public static void main(String args[]){ Person per = null ;  // 声明对象 //per = new Person() ; // 实例化对象 per.name = "张三" ;  // 为姓名赋值 per.age = 30 ;   // 为年龄赋值 per.tell() ;   // 调用方法,打印信息 } }; 异常如下: Exception in thread "main" java.lang.NullPointerException at ClassDemo03.main(ClassDemo03.java:12)

  • 04

    4、错误的多态,出现异常 class A{     // 定义类A public void fun1(){  // 定义fun1()方法 System.out.println("A --> public void fun1(){}") ; } public void fun2(){ this.fun1() ;  // 调用fun1()方法 } }; class B extends A{ public void fun1(){  // 此方法被子类覆写了 System.out.println("B --> public void fun1(){}") ; } public void fun3(){ System.out.println("B --> public void fun3(){}") ; } }; public class PolDemo03{ public static void main(String asrgs[]){ A a = new A() ;   // 实例化了一个父类对象 B b = (B)a ;  // 发生了向下转型关系 b.fun1() ; b.fun2() ; b.fun3() ; } }; 异常如下: Exception in thread "main" java.lang.ClassCastException: A at PolDemo03.main(PolDemo03.java:20)

  • 05

    5、两个数字相除,被除数为0,出现异常 public class ExceptionDemo01{ public static void main(String args[]){ System.out.println("********** 计算开始 ***********") ; int i = 10 ;  // 定义整型变量 int j = 0 ;   // 定义整型变量 int temp = i / j ; // 此处产生了异常 System.out.println("两个数字相除的结果:" + temp) ; System.out.println("********** 计算结束 ***********") ; } }; 异常如下: ********** 计算开始 *********** Exception in thread "main" java.lang.ArithmeticException: / by zero at ExceptionDemo01.main(ExceptionDemo01.java:6)

  • 06

    6、两个数字相除,输入两个参数,分别为字母a 和b,出现异常,数字格式化出问题 public class ExceptionDemo04{ public static void www.gzlij.com main(String args[]){ System.out.println("********** 计算开始 ***********") ; int i = 0 ;  // 定义整型变量 int j = 0 ;   // 定义整型变量 try{ String str1 = args[0] ;  // 接收第一个参数 String str2 = args[1] ;  // 接收第二个参数 i = Integer.parseInt(str1) ; // 将第一个参数由字符串变为整型 j = Integer.parseInt(str2) ; // 将第二个参数由字符串变为整型 int temp = i / j ; // 此处产生了异常 System.out.println("两个数字相除的结果:" + temp) ; System.out.println("----------------------------") ; }catch(ArithmeticException e){ // 捕获算术异常 System.out.println("出现异常了:" + e) ; } System.out.println("********** 计算结束 ***********") ; } }; 异常如下: ********** 计算开始 *********** Exception in thread "main" java.lang.NumberFormatException: For input string: "a" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:447) at java.lang.Integer.parseInt(Integer.java:497) at ExceptionDemo04.main(ExceptionDemo04.jav

  • 07

    7、两个数字相除,输入两个参数,如果两个参数什么也不输入,出现异常,数组超出绑定。 异常如下: ********** 计算开始 *********** Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at ExceptionDemo04.main(ExceptionDemo04.java:7)

  • 08

    7、assert断言的使用,当断言结果不对出现异常。 public class Test { public static void main(String args[]){ int i[] = {1,2,3};   // 数组长度为3 assert i.length==0;  // 此处断言数组长度为0 } } 异常如下: D:\d代码>java -ea Test Exception in thread "main" java.lang.AssertionError at Test.main(Test.java:5) l 断言需要在运行时需要加上“-ea”,如上java –ea 类名。

(0)

相关推荐