异常指程序在【编译时】或者【运行时】不正常的现象。
Java是一种面向对象的语言,Java的设计们考虑到开发者经常会遇到一些问题,它们把经常遇到的问题封装成了类
一旦程序出现问题,其实底层就会创建对应的异常对象。开发者可以根据异常对象的信息,去发现程序的问题。
异常的继承体系
Throwable
--Exception 【编译时异常】
除了RuntimeException,其他的都是编译时异常
特点:编译时有红色波浪线
--RuntimeException 【运行时异常】
它和它的子类都是运行时异常
特点:在运行时程序报错
--Error 【错误】
无法解决的严重的错误
1. throw关键字
throw: 用来产生(制造)一个异常对象
//产生(制造)了一个索引越界的异常
throw new IndexOutOfBoundsException("3"); //3索引越界了
一般用法:在写一个方法的时候,对参数进行合法性的校验,如果校验不合法就可以给调用者产生一个异常对象
public void method(ArrayList<String> list,int index){
if(list==null){
throw new NullPointerException();
}
if(index>=list.size()){
throw new IndexOutOfBoundsException(index+"");
}
String s=list.get(index);
System.out.println(s);
}
2. throws和try...catch
throws: 用来在方法上声明一个异常(一般声明编译时异常即可)
当调用者调用这个有 throws 声明异常的方法,就会有编译报错的提示。
3. try...catch: 自己异常
Date date = null;
try {
//解析:字符串-->Date:会产生了编译时异常
date = sdf.parse("2019/08/08");
} catch (ParseException e) {
//e.printStackTrace();
System.out.println("有异常、需要处理");
}
注意:catch可以写多个,但是较大的异常必须写在最后。
4. 对于异常的处理
1.是运行时异常、直接改代码
2.如果编译时异常,可以使用try...catch处理,或者throws声明
5. finally: 和try...catch结合起来使用的
try{
}catch(异常类 e){
}finally{
//不管异常发不发生,finally里面的代码都必须执行。
}
6. 自定义异常类
第一步:自定义一个异常类 extends RuntimeException 或者 Exception
注意: 异常的【类名最重要】,见名知意
第二步:写上构造方法(空参数、有字符串参数的)
//自定义异常类
public class FlaseMoneyException extends Exception {
public FlaseMoneyException() {
}
public FlaseMoneyException(String message) {
super(message);
}
}
public class Demo3 {
public static void main(String[] args) throws FlaseMoneyException {
//调用有异常的方法
sale(7);
}
//方法中产生一个自定义异常
public static void sale(int money) throws FlaseMoneyException{
if(money==5){
System.out.println("买一瓶脉动");
}
if(money==10){
System.out.println("买二瓶脉动");
}
if(money==7){
throw new FlaseMoneyException(money+": 没有这种面值,报警了,等着");
}
}
}
java基础知识点:异常
最新推荐文章于 2023-04-11 14:02:17 发布