您的位置:首页 > 其它

异常

2017-10-19 18:21 134 查看
异常处理:
异常处理编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。就好比一个旅游景点,每到一个有可能出现问题情况的地方就会设置一个处理问题的处理点,不同的问题有不同的处理点,例如花粉过敏有花粉过敏的处理点,摔伤有摔伤的处理点等。程序也是如此会出现各种各样的错误,同理不同的异常错误有不同的异常错误处理方法。面对出现错误该有的解决心态:
出现异常出现错误了不要烦躁或抱怨,出错了就是经验就是见识,所以应该保持良好的心态。解决错误的时间越长就记得越深刻越能获得更多的经验,当一个错误解决不了的时候不要钻牛角尖,可以先休息一下喝喝茶、散散步,等心情放松再去解决,如果还是解决不了就第二天再解决。
初学时出异常先看报错名称或编号,学会排除法(把一部分代码注释掉,然后一句一句分开运行)使用打印语句打印变量和执行过程,还是有错误就把类给删掉,慢慢排除。

常见的异常介绍:
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异常处理代码处理。例如:




代码示例:




如何看报出的异常:



第一句表示异常出现在哪个线程,类名表示的是错误的类型,上 图这个就是一个空指针的异常类型,接着下面那几句表示的是哪一个包下哪一个类的哪个方法和在第几行代码上。 在报异常时要看是自己写的类,不要看其他不认识的类,例如:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  异常