Java异常

异常时指程序运行过程中所发生的不正常的事件,它会中断正在运行的程序。

Java编程语言使用异常处理机制为程序提供了错误处理的能力。

处理异常通过5个关键字来实现:try,catch,finally,throw,throws

try:执行可能会出现异常的代码

catch:捕获异常

finally:无论是否发生异常,代码总能执行

throws:声明方法中可能要抛出的各种异常

throw:手动抛出异常

try块中所有语句正常执行完毕,没有异常,catch块中的所有语句都将被忽略

try块中执行遇到异常,try块中剩余的程序都会被忽略,系统自动生成相应的异常对象,如果这个异常对象与catch中声明的异常类型匹配,则相应的catch块将被执行。如果不匹配,程序会中断。

Java异常_第1张图片

异常对象常用的方法名:

方法名

说    明

void printStackTrace()

输出异常的堆栈信息

String getMessage()

返回异常信息描述字符串,

printStackTrace()输出信息的一部分

 常见的异常类型

异 常 类 型

说    明

Exception

异常层次结构的父类

ArithmeticException

算术错误情形,如以零作除数

ArrayIndexOutOfBoundsException

数组下标越界

NullPointerException

尝试访问 null 对象成员

ClassNotFoundException

不能加载所需的类

IllegalArgumentException

方法接收到非法参数

ClassCastException

对象强制类型转换出错

NumberFormatException

数字格式转换异常,如把"abc"转换成数字

多重catch块

排列catch块顺序:先子类后父类。发生异常按顺序逐个匹配。只执行第一个类型匹配的catch语句。

在catch块后面加上final块,除了类似catch块中有“System.exit(0);”中断程序,退出虚拟机外,任何情况都会执行。return语句会先执行return前先执行finally块。

声明异常 throws

Java语言中通过关键字throws声明某个方法可能抛出的各种异常。

throws可以同时声明多个异常,多个异常用逗号隔开。

抛出异常 throw

除了系统自动抛出异常外,在编程过程中,我们往往遇到这样的情形:有些问题是系统无法自动发现并解决的,如年龄不在正常范围内、性别输入不是“男”或“女”等,此时需要程序员而不是系统来自行抛出异常,把问题提交给调用者去解决。

throw和throws的区别

throw和throws的区别表现在以下三个方面
作用不同: throw用于在程序中抛出异常; throws用于声明在该方法内抛出了异常。

使用的位置不同:throw位于方法体内部,可以作为单独语句使用; throws必须跟在方法参数列表后面,不能单独使用。

内容不同: throw抛出一个异常对象,而且只能是一个;throws后面跟异常类,而且可以跟多个异常类。

异常的分类

Java异常_第2张图片

 自定义异常

当JDK 中的异常类型不能满足程序的需要时,可以自定义异常类。
 

Java异常_第3张图片

异常处理原则

异常处理与性能
异常只能用于非正常情况
不要将过于庞大的代码块放在try中
在catch中指定具体的异常类型
需要对捕获的异常做处理
 

你可能感兴趣的:(java,开发语言)