异常处理
逻辑错误和语法错误不是异常、
error:java虚拟机无法解决的问题
内部错误 资源耗尽 内存溢出 (比较严重) 一般不编写针对性的代码进行处理
解决办法:
终止程序
错误处理
expection:
空指针
读取不存在的文件
网络链接中断
数组越界
有的错误在编译试捕获 但是在运行时才会出现
因此分为 编译时异常 和 运行时异常
编译时异常:io异常 文件未找到异常 类未找到异常
运行时异常:空指针异常 数组越界异常 数据格式异常 数据不匹配异常 除0
异常处理机制
try catch
处理异常
抛:
一旦异常就会生成一个对应异常类的对象
并将对象抛出
一旦抛出 后面的代码就不再执行
抓:
抓住这个对象
异常处理的方式
1、try catch final
2、throw
try catch final 的使用
try{
}
catch(异常类型1 变量1)
{
//异常处理方式1
}
catch(异常类型2 变量2)
{
//异常处理方式2
}
catch(异常类型3 变量3)
{
//异常处理方式3
}
finally
{
//一定会执行的代码
}
如果没有子父类关系 顺序无所谓 否则 子类必须在父类上边
常用的异常处理方式
String getmessage
printstatcktrance
在try中声明的变量 在除了try结构以后 就不能再被调用
finally
是可选的
可以加return try中有return catch中也有等等情况
的时候 也会继续执行finally 先执行final然后执行return
找返回值 先返回finally中的返回值 然后再向上找
、
注: 像数据库链接 输入出入流 网络变成中的socket等资源 jvm是不能回收的
我们需要自己动手进行释放 放到finally中
在开发中
其实本身就是编译时异常 我们把他通过try 变成了运行时异常
运行时异常因此就不需要进行处理了
throws
往上报
throws +异常类型
产生异常 抛给调用他的地方 直到有方法进行trycatch
异常后代码将不会执行!
二者之间进行如何选择
1、throws子类重写的方法规则
throws子类方法重写的异常类型一定小于等于父类的异常类型
假如子类中需要抛出异常 只能使用trycatch
2、当出现一系列有一定递进关系时的代码时 不要一个一个处理 当他们放到一起的时候 进行整体的处理
都先进行throws 整体进行trycatch
3、throw 进行生成异常 throws进行抛出异常
异常的处理两种方式
最新推荐文章于 2024-06-15 14:42:56 发布