Java异常

异常时java程序在运行时发生的错误

1.异常的分类

在这里插入图片描述

基于运行状态分类

异常分为运行时异常和编译时异常。


编译的异常我们需要处理,否则程序无法运行。


运行时异常,RuntimeException及其子类都是,这种异常不用处理,编译会通过,不过这样的程序会有安全隐患,遇到这种异常是需要改代码的


Error,通常需要对程序进行修正

基于操作分类
Exception
RuntimeException
错误类型转换
数组越界
访问空指针
IOException
试图在文件尾部访问数据
试图打开一个不存在的文件
试图根据给定字符串查找Class对象,而这个字符串表示的类不存在

2.异常的处理

异常的处理方式主要有两种,try…catch()…fianlly或者throws,接下来将详细分析这两者的区别。

(一)捕获异常try…catch…finally

try:是用来异常的检测
catch:是用来捕获异常
finally:是用来结束资源

如果try语句中抛出了catch子句中声明的异常类
1)try块中余下的语句将不再执行
2)程序执行catch中的处理代码

1)捕获多个异常
try{
	..
}catch(FileNotFoundException e){
	..
}catch(IOException e){
	..
}catch(UnknownHostException e){
	..
}

当多个catch捕获不同类型的异常种类试,如果捕获到一个种类的,后续的catch将不再执行

2) 获取异常的更多信息
try{

}catch(Exception e){
	e.getmessage()
	e.printStackTrace()
}
3)合并不同类型的异常

在JavaSE7中catch可以合并不同类型的异常执行同一个子句

try{

}catch(IOException |FileNotFoundException e){
	..
}
(二)throws声明异常

使用throws,什么也不用做。通过将异常传递给调用者(推卸责任),让调用者去操心!

如果调用者调用了一个抛出异常的方法,就必须处理或者继续传递(甩锅),最终由jvm来处理,即打印异常消息和堆栈信息。

throws声明了方法体内有可能会抛出异常,但不一定发生。throws在方法声明后,throws后面跟的是异常类名

1)throws&throw傻傻分不清楚

throw是用于方法体内的,具体于某个位置。执行了throw表示一定发生了
属于我们手动调用抛出的异常

	if(age>50){
		..
	}else{
		throw new Exception("年龄不能超过50")
	}

2)而throws用于声明这个方法体内有抛出异常的可能,调用该方法的调用者需要做好处理异常的准备

public ststic void main(String[] args){
	try{
		method()
	}catch(Exception e){
		e.printStackTrace()
	}
}

public static void method() throws Execption{
	if(age>50){
		..
	}else{
		throw new Exception("年龄不能超过50")
	}
}

3.自定义异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值