Java基础-异常
Posted 烈火延维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础-异常相关的知识,希望对你有一定的参考价值。
异常
异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误
1检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
2运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
3错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
空指针异常 NullPointerException
数组下标越界异常 ArrayIndexOutOfBoundsExecption
类型转换异常 ClassCastException
算数异常 ArithmeticException
异常方法
下面的列表是 Throwable 类的主要方法:
检查异常: 文件异常 IOException SQL异常SQLException
抛出异常:java程序执行过程中发生异常事件,可以生成一个异常类,该异常类封装了异常事件的信息并将提交给java运行时系统,系统默认直接打印出来。
捕获异常:java运行时系统收到异常对象时,会寻找能处理这异常的代码并把当前异常对象交于处理,这一过程称为捕获异常。
try-catch 以及 try-catch-finally
Try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块 从子类到父类
}catch(Exception2 e){
}finally {
//最终将要执行的代码
}
finally 关键字用来创建在 try 代码块后面执行的代码块。
无论是否发生异常,finally 代码块中的代码总会被执行。
throw throws
如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
声明将要抛出的任何异常(声明)
Public void 方法名(参数列表)
throws 异常类别{
//调用抛出异常的方法或者:
throw new Execption();
}
声明自定义异常
在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。
所有异常都必须是 Throwable 的子类。
如果希望写一个检查性异常类,则需要继承 Exception 类。
如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。
通用异常
在Java中定义了两种类型的异常和错误。
JVM(Java虚拟机) 异常:由 JVM 抛出的异常或错误。例如:NullPointerException 类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。
程序级异常:由程序或者API程序抛出的异常。例如 IllegalArgumentException 类,IllegalStateException 类。
异常总结
1 在运行异常程序的时,采用逻辑去合理规避同时辅助try-catch处理
2 在多重catch 块后面,可以加上一个catch(Exception)来处理可能被遗漏的异常
3 对于不确定的代码,也可以加上try-catch,处理潜在的异常
4 尽量去处理异常,切忌只是简单的去调用printStackTrace()去打印输出
5 具体如何处理异常,要根据不同的业务需求和异常类型去决定
6 尽量添加finally 语句去释放占用的资源 (数据库)
7重写方法需要抛出与原方法所抛出异常类型一致的异常 或者不抛出异常
以上是关于Java基础-异常的主要内容,如果未能解决你的问题,请参考以下文章