java记录3--异常
2024-10-08 13:51:31
异常的分类
1.Error
由java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等等,JAVA程序无法对此错误
try
{
//可能出现异常的代码块
}
catch(exception1 )
{
//产生异常1的处理措施
}
catch(exception 2)
{
//产生异常2的处理措施
}
。。。。
finally
{
//无论是否捕获异常都必须处理的代码
}
进行处理
2.RUNTIME EXCEPTION
java虚拟机在运行时产生的异常,如0做分母,数组下标越界,其产生比较频繁,处理麻烦,对程序可读性和运行效率影响太大,因此由系统检测
用户可不做处理。
3.EXCEPTION
一般程序中可预知的问题,其产生的影响可能会带来意想不到的结果
因此Java虚拟机要求java程序必须捕获或声明所有的非运行时异常
//捕获异常相关问题 try
{
语句1;//一旦语句1出现异常,则语句2永远得不到执行
语句2;
} catch (exception1 e)
{......} catch (exception e)
{......} finally{....}//无论try中代码是否抛出异常
//finally中代码都会得到执行,通常在finally语句可以进行资源的清除工作
3.throw
3.1用来抛出异常 格式:throw new 异常名(参数);
3.2假设f方法抛出了A异常,则f方法由2种方式来处理A异常
throws A//谁调用f方法,谁处理A异常,本身不处理
try。。catch//自己处理
ps:要抛出的异常必须得是throwable的子类
4.throws
格式 void f()throws A
{。。。}
4.1 throws A表示调用f方法时f方法 可能 会抛出A类异常 , 建议 你调用f方法时最后对可能抛出的异常进行捕捉
4.2throws A不表示f方法一定会抛出A类异常,不表示调用f方法时,必
须对A异常进行捕捉
例如假设A是runtime exception子类异常,可以处理也可以不处理
class c extends Throwable
{
public void f()
{
throw new RuntimeException();//不报错
}
}
public class A
{
public static void main(String [] args)
{ }
}
ps:1.所有的catch最多只能有一个被执行,也可能所有的catch都没有被执行
2.先catch子类异常再catch父类异常,如果相反则编译时会报错
3.重写方法抛出异常的范围不能大于被重写方法排除的异常范围
//自定义异常A
class A extends Excepion
{
} //自定义异常B
class B extends Exception
{
} //自定义异常C
class C extends Exception
{
} class M
{
void f() throws A, B
{
}
} class N extends M
{
void f() throws A,B //可以throws A或B,也可以throws A,B
也可以不throws,但不可以throws C
即"子类覆盖了父类方法时,子类方法抛出异常的范围不能大于父类方法抛出的异常范围"
{
}
} class Test
{
public static void main(String[] args)
{}
}
最新文章
- Webform(文件上传)
- Nodejs开发(1.Sublime Text 3配置)
- laravel 控制器里 redirect url地址传两个参数的方法
- PageBean分页组件
- 菜鸟从零学编程(八)——将MyEclipse项目导入到Eclipse
- IPC with pipes, demo of 'popen'
- topcoder srm 628 div2 250 500
- VirtualBox NAT方式与主机互相通信
- mac os的android开发国内库下载地址
- Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作
- 2数组的slice和splice方法
- 按钮的图标 Button icons-JQUERY MOBILE 1.0正式版中文手册
- Android Studio中.9.png文件出错问题
- 简单的利用JS来判断页面是在手机端还是在PC端打开的方法
- ApiUser
- 高性能之js
- 【iCore1S 双核心板_FPGA】例程十七:基于双口RAM的ARM+FPGA数据存取实验
- WordCount 3
- Scala开发入门指南
- Flink BLOB架构