异常

异常处理:

异常处理编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。

就好比一个旅游景点,每到一个有可能出现问题情况的地方就会设置一个处理问题的处理点,不同的问题有不同的处理点,例如花粉过敏有花粉过敏的处理点,摔伤有摔伤的处理点等。程序也是如此会出现各种各样的错误,同理不同的异常错误有不同的异常错误处理方法。

 

面对出现错误该有的解决心态:

  出现异常出现错误了不要烦躁或抱怨,出错了就是经验就是见识,所以应该保持良好的心态。解决错误的时间越长就记得越深刻越能获得更多的经验,当一个错误解决不了的时候不要钻牛角尖,可以先休息一下喝喝茶、散散步,等心情放松再去解决,如果还是解决不了就第二天再解决。

  初学时出异常先看报错名称或编号,学会排除法(把一部分代码注释掉,然后一句一句分开运行)使用打印语句打印变量和执行过程,还是有错误就把类给删掉,慢慢排除。

 


常见的异常介绍:

java.lang.NullPointerException:  空指针错误,原因:访问的对像变量未指向内存空间

String s=null; 赋一个空指针,未分配内存

s.toString(); 进行调用就会出现错误

可以使用if语句进行判断或者try catch捕获

_______________________________________________________



java.lang.AraysIndexOutOfBoundsException: 数组越界错误,出现这种错误是因为调用下标赋值小于0或大于等于数组长度

int[] i=new int[3];

i[3]=100; 因为数组长度是3,所以这种赋值方式就会出现数组越界错误

_______________________________________________________




java.lang.StringIndexOutOfBoundsException: 字符串下标越界错误

原因:String字符串是使用char[]数组制作的

String s="abcd";

s.charAt(4); 因为下标是从0开始的所以会出错误

_______________________________________________________




java.lang.ArithmeticException:不能被零整除错误,原因:零不可以作为除数

System.out.println(1/0); 示例:不能被0整除所以会出错误

_______________________________________________________




java.lang.NumberFormatException 数字格式化错误,原因:字符串内容无法转换成十进制数值,字符串内容转换成数字错误

Integer.parseInt("123?"); 错误代码示例

_______________________________________________________




java.lang.ClassCastException  类型转换错误,原因:你所强制转换的对象类型不符合要强转的类型

Object obj=new String();

Test t=(Test)obj;

if(obj instanceof Test){ 加上一个判断语句就可以避免上面那种写法出现的类型转换错误

    Test t=(Test)obj;

}

_______________________________________________________




java.lang.ClassNotFoundExceptiong 类没有创建,查找不到要加载的类,原因:在classpath找不到你要的类,有可能写错名字 要记住包+类名才是类的全名

此错误出现的情况:

1.classpath环境中没有你要的这个类

2.或者是开发环境中没有你要的这个类

3.代码写错

Class.forName("aaa"); 此错误示例代码

_______________________________________________________




java.lang.NoClassDefFoundError JVM报错找不到类文件

找不到所要查找的属性错误:

java.lang.NoSuchFieldError   虚拟机报找不到类的错误

java.lang.NoSuchFieldException  找不到你要访问的属性

找不到所要查找的方法错误:

java.lang.NoSuchMethodError  虚拟机报找不到方法的错误

java.lang.NoSuchMethodException  找不到你要访问的方法

_______________________________________________________

 



java.lang.OutOfMemoryError 虚拟机内存不足错误

byte[] b=new byte[1024*1024*1024]; 此种写法会导致内存不足就会报上面的错误

解决方案:使用-Xmx加给虚拟机内存

_______________________________________________________

 




java.lang.VirtualMachineError 虚拟机错误

Exception 强制要求处理的异常类型

RuntimeException 不强制要求处理的异常类型

_______________________________________________________

 

 

 

出现异常先看报错的名称或者编号,语法错误、平台错误、虚拟机错误是不可以处理的,只有代码运行时错误(数据不规范)可以使用try  catch异常处理代码处理。例如:

e01b501b289aeba0b8ebddbbe513b762.png


代码示例:

3f9849c546b06b243126bb85b26d569e.png


如何看报出的异常:

f9bbd6ff2b7784a3f849fb44e2981a6c.png

第一句表示异常出现在哪个线程,类名表示的是错误的类型,上

 

图这个就是一个空指针的异常类型,接着下面那几句表示的是哪一个包下哪一个类的哪个方法和在第几行代码上。

 

在报异常时要看是自己写的类,不要看其他不认识的类,例如:
6eb2f0b8006d5ce673804bd8b3d7e733.png





本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1974347,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值