Java异常机制

1.常见异常

1 下标越界(数组)
2 空指针异常(数组,面向对象)
3 栈内存移出(递归)
4 类型转换异常(面向对象)
5 数字格式化异常(常用API)

2.概述

异常 :
是java提供的识别错误的响应机制,可以使程序更加健壮 易于调试
异常是错误的另外一种说法
java中 有个专门模拟所有异常的类,Throwable,是异常类的祖类,所有的异常类 都是它的子类
如果程序 出现了异常,会终止程序生命周期执行,所以需要进行处理,

异常处理形式
try…catch… : 解决异常,一般用在客户端(调用处)
throws : 抛异常,一般用在类库端(服务端,被调用的地方)
throw : 异常源,制作异常,创建异常对象

3.继承体系

在这里插入图片描述

4.Error

4.1概念
系统内部错误,这类错误由系统进行处理,程序本身无需捕获处理
比如:OOM(内存溢出错误)、VirtualMachineError(虚拟机错误)、StackOverflowErrar(堆栈溢出错误)等,一般发生这种情况,JVM会选择终止程序。

5.Exception

5.1 概述

Exception是所有异常类的父类。分为非RuntimeException和RuntimeException 。
非RuntimeException
指程序编译时需要捕获或处理的异常,如IOException、自定义异常等。属于checked异常。
RuntimeException
指程序编译时不需要捕获或处理的异常,如:NullPointerException等。属于unchecked异常。一般是由程序员粗心导致的。如空指针异常、数组越界、类型转换异常等。

5.2 常用方法

在这里插入图片描述

5.3 Try…catch…

## 第一种 单异常

try{
高风险代码;
}catch (异常类型 变量){
出错后的操作;
}

## 第二种 多异常
try{
高风险代码
}catch(异常类型 变量){

}catch(异常类型 变量){

}
多个异常类型之间不能有继承关系,有,就必须是从子类到父类,
否则会因为多态的原因把异常对象获取

## 第三种 自动关闭资源
try( 开启资源; ){
高风险代码;
}catch(异常类型 变量){

}

5.4 Throws

throws 把异常抛出,是一种提醒,跟调用处说明,这里可能有异常
可以抛出多个异常,多个之间 逗号隔开

5.5 Finally

finally : 是必须执行的语句
只有一种情况不执行,System.exit(0);
1 finally 不能单独使用 2 必须和try一起 或者 try…catch 一起使用

5.6 不能有更宽泛的异常

针对继承状态下,抛出的异常类,要么和父类抛出的异常类一样,要么就是父类抛出的异常类的子类, 要么 就不抛出异常

5.7 自定义异常

5.7.1 语法
自定义异常类 :
1 继承一个已有的异常类
一般我们继承Exception即可
如果是运行时异常,则继续RuntimeException
2 公共的无参构造
3 有参构造,传入String,是错误信息

public class Test extends Exception {
	public Test() {
	}

	public Test(String msg) {
		super(msg);
	}

}

5.8 应用场景

需求 :
完成用户登陆
1 用户拥有 username,password,nickname三个属性
2 业务逻辑类,提供登陆方法,校验是否登陆成功,准备用户数组,保存用户信息(相当于是数据库)
3 入参是 用户名和密码 , 出参也是用户对象,登陆成功之后,返回用户的所有信息
4 客户端类,接收用户输入,进行登陆校验

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值