异常及其解决

来源:互联网 发布:网络侦探 2周目 彩蛋 编辑:程序博客网 时间:2024/06/05 04:12

异常

1.异常的分类

这里写图片描述

2.Error和Exception

Error 程序无法处理,这些异常发生时Java虚拟机一般会选择停止
Exception 是程序可以处理的,分为运行时异常和非运行时异常

3.运行时异常和非运行时异常

运行时异常
都是RuntimeException类及其子类异常,一般为逻辑错误;程序可以选择捕获处理,也可以不处理。

非运行时异常
如IOException、SQLException,不处理就不能编译通过

4.异常处理

总的来说分为两类,捕获和抛出
try catch finally属于捕获组
throw throws属于抛出组

·try catch finally捕获组

try…catch…finally、try…catch、try…finally三种结构
try 里是要运行的代码块
try语句块中代码受异常监控,其中代码发生异常时,会抛出异常对象,这时catch 捕获try代码块中的异常并与自己的异常类型匹配,若匹配再执行catch,
finally 不管是否try语句块是否发生异常,都会执行
这里写图片描述

·throw throws抛出组

throw 用于方法体内部,用来抛出一个Throwable类型的异常。
throws 用于方法体外部的方法声明部分,用来声明方法可能会抛出某些异常

public static void test3() throws Exception{      throw new Exception(“方法test3中的Exception”);}

所谓处理

一般来说,说调用这个异常的方法,谁要进行处理,不想处理就层层上抛,知道在main里结束前要进行处理,如果方法层层上抛,jvm会打印异常信息和堆栈信息。

5.常见的异常,原因及解决方案

1、java.lang.NullPointerException(空指针异常)
  原因:调用了未经初始化的对象或者是不存在的对象
方案debug一下查看是不是某些地方传了一个空值

2、 java.lang.ClassNotFoundException
原因:指定的类不存在,
方案:这里主要考虑一下类的名称和路径是否正确即可

3、java.lang.IndexOutOfBoundsException
原因:数组下标越界异常
方案:检查一下,看自己调用的下标是不是超出了数组的范围
4、java.lang.IllegalArgumentException
原因:方法的参数错误
方案:检查一下方法调用中的参数传递是不是出现了错误

5、java.lang.ClassCastException
数据类型转换异常,当试图将对某个对象强制执行向下转型,但该对象又不可转换又不可转换为其子类的实例时将引发该异常

6、 java.lang.FileNotFoundException
原因:文件未找到异常
方案:先判断一下当前文件是否存在,在填写文件的路径时一定要具体到文件

7、java.lang.NoSuchMethodException
方法不存在异常,当程序试图通过反射来创建对象,访问(修改或读取)某个方法,但是该方法不存在就会引发异常

8、 java.lang.NoSuchFiledException
方法不存在异常,当程序试图通过反射来创建对象,访问(修改或读取)某个filed,但是该filed不存在就会引发异常