异常
来源:互联网 发布:网络有利还是有害 编辑:程序博客网 时间:2024/05/16 07:48
概念:
对于程序执行时出现的意外情况,在Java中被称为异常(Exception),出现异常时进行的相关处理,称为异常处理。
Java中使用一些专门的类来描述不同的异常情况,这些类成为异常类。所有异常类组成了Java的异常类继承树体系。
常见的异常类:
Exception 异常继承树的根类
RuntimeException 运行时异常
ArithmeticException 算术错误异常(例子:除数为0)
illegalArgumentException 方法接收到非法参数异常
NullpointerException 空引用异常
ClassNotFoundException 不能加载所需的类异常
NumberFormatException 数值转化格式异常(如字符串转float)
IoException I/O异常的根类
FileNotFoundException 找不到文件异常
EOFException 文件结束异常
InterruptedException 线程中断异常
Java异常的处理机制:
可以使Java语言编程程序更稳定。
Java程序在执行过程中如果出现异常,会自动实例化异常类对象,该异常对象将被自动提交给JVM,当JVM接收到
异常对象时,会寻找能处理这一异常的代码,并把当前异常对象交给其处理,这一过程称为捕获异常。
如果JVM找不到可以捕获异常的代码,则Java程序将异常退出。
Java中使用try和catch关键字捕获异常,格式如下:
try{ //代码块(可能出现异常的代码)} catch(异常类型1 exception){ //对异常进行处理的代码块} catch (异常类型2 exception){ //对异常进行处理的代码块} finally{ //无论是否有异常,始终都会被执行}<span style="white-space:pre"></span>只要有try catch语句,就会判断是否有finally<优先执行>捕获异常的顺序:
1.尽量把最可能出现的异常类放在最上面;
2.把exception放在最后面,防止异常没被捕获。
捕获异常的过程:
a.当有异常发生时,代码控制流程跳转到捕获异常执行catch中的代码块,执行完后继续执行catch代码块后的代码,
b.当没有异常发生时,不会执行catch中的代码块。
c.一段代码可能会引发多种类型的异常,当引发异常时,会按顺序来查看每个catch的异常类型,并只执行第一个与
异常类型匹配的catch中的代码块,其他的catch中的代码块将不会执行。
throw关键字和throws关键字<抛出异常>
throw用于在代码中抛出异常,格式如下:
throw new 异常类;
throws用于在方法中抛出所有异常,而它本身不捕获异常。这些异常将被抛给方法的调用者。调用者需在方法中
捕获异常,如果不捕获则必须在方法中使用throws继续将异常抛出,直到异常被捕获处理。格式如下:
返回值类型 方法名(方法参数)throws 异常类1,异常类2...{
方法体;
}
异常分类:非受检和受检异常
非受检异常:
指编辑器不要求强制处理的异常。一般是因程序员代码编写方式不当导致的。RuntimeException 及其子类都属于非受检异常。
受检异常:
编译器要求必须强制处理的异常,即程序运行时由于外界因素导致的异常。如:
ClassNotFoundException没有找到具有指定名称类的异常
IoException 操作文件时发生的异常
SQLException 操作数据库时发生的异常
- 异常
- 异常!
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 【微信公众平台开发】借用微信内置图片浏览功能
- 矩阵的LU分解———学习笔记 ,转载自chinaunix
- hibernate修改数据库已有的对象【简化操作】
- Arduino制作温湿度计
- C++引用&概念及用法
- 异常
- 剑指offer--链表中倒数第k个结点-java
- UDP传输中文乱码、异常解决
- C++成员变量的初始化顺序问题
- 设计模式之单例模式
- Android入门——利用Canvas完成绘制点、圆、直线、路径、椭圆、多边形等2D图形
- 微信公众平台初试
- 九度OJ 1533 最长上升子序列 (基于贪心和二分查找)
- android studio 代码修复提示快捷键