java之异常接口
接口
- 接口:关键字interface
接口的特点:
1:接口不能直接创建对象,但是可以创建数组
2:接口通常是用来被类实现的,使用关键字implements,实现之后,需要重写接口中的所有抽象方法,如果不想重写,将自己变成抽象类
3:接口中只能存放常量和抽象方法
4:接口中默认的访问权限是public也只能是public
5:接口可以多继承接口
6:接口可以被类多实现(也就是一个类可以实现多个接口),使用逗号隔开
7:如果又有继承又有实现,应该先继承,在实现
- 接口的作用
1:做功能的拓展
2:作为父类统一数据类型
异常
-
异常:异常是指在程序运行过程中发生的不正常事件
-
throwable,error,exception的区别?
1--->error和exception都是throwable派出生的两个子类
error指的是靠程序本身无法恢复的严重错误,例如:内存溢出等
exception指的是由java应用程序抛出和处理的严重性错误,例如:文件未找到等2--->throw和throws的区别
throw表示在方法中抛出异常对象的
throws表示在方法的后面声明抛出的异常类型的
throw和throws通常是成对出现的,但是如果throw的是RuntimeException或者是他的子类异常,则不需要在方法后面throws
- 注意:实际开发中什么情况下需要使用try-catch
当一个方法中throw了一个异常对象,并且在方法后面使用throws声明了异常类型,那么在调用该方法思维时候,就需要添加try-catch(也可以不捕获,选择继续throws抛出去)
- try-catch语句块
格式1;
try{预计会抛出异常的代码块
}catch(能够捕获异常类型){如果发生异常,处理的代码块;}
格式2:
try{
预计会抛出异常的代码块;
}catch(异常类型1){
处理的代码块1
}catch(异常类型2){
处理的代码块2
}
...
catch(异常类型n){
处理的代码块n
}
格式3:
try{
预计会抛出异常的代码块;
}finally{
无论如何都一定会执行的代码块;
}
- finally通常是用来关闭流或者是某些连接的(数据库连接等)
- finally可以直接接在try的后面,此时就不能再有catch了
- finally还可以直接接最后一个catch的后面
### system.exit(数字):是唯一让finally不再执行的代码块
注意:格式2中的catch可以有多个,但是越往后面catch中捕获的异常类型越大,越要比前面的异常类型要大
例如图片格式:
常见异常
- classcastException:类型转换异常
-
NullPointerException:空指针异常
-
ArrayIndexOutOfBoundsException:下标越界异常 $
- ClassNotFoundException:类没有找到异常 -->不属于运行时异常(属于checked异常:非运行时异常) $
- ClassCastException:类转换异常
- NumberFormatException:数字转换异常 $
- IllegalArgumentException:接收到非法参数 $
- InputMismatchException:输入不匹配异常
- ArithmeticException:算术异常
- RuntimeException:运行时异常 $
- SQLException:数据库的语句异常 $
- Exception异常分两种
1:运行时异常
2:非运行时异常
自定义异常
-原有的程序自带的异常类型如果不匹配,我们还可以自己定义相关的异常类型
自定义异常的步骤:
1->自定义一个异常
2->继承Exception
3->重写相关的Exception中所有的方法(实际上就是构造方法,复制过来改成自己定义类的名字)