Java学习之异常
来源:互联网 发布:软件的架构设计 编辑:程序博客网 时间:2024/05/22 00:01
一、概念
异常就是程序出现不正常的情况
二、分类
异常包括
错误:这是非常严重的问题,一般我们处理不了
异常:编译时期异常:开始就必须处理,如果不处理,程序就没法运行
运行时期异常:开始可以不用处理,但是这种问题一旦发生,就是我们的程序问题,需要修改程序
三、体系结构
四、异常演示
package com.edu.exception;public class ExceptionDemo {public static void main(String[] args) {//int a = 10;//int b = 0;//System.out.println(a/b);//java.lang.ArithmeticException: / by zerotry{int a = 10;int b = 0;System.out.println(a/b);}catch (ArithmeticException e) {System.out.println("除数不能为0");}//finally{//System.out.println("finally里面一定会执行");//}}}
五、异常处理
默认处理方案:一旦程序出现了问题,就会把问题的类名,错误原因,错误的位置等信息打印在控制台,以便我们观察,并且会自动从当前出问题的地方停止掉
默认处理坏处:程序由多个部分组成,其中一个出问题了,不应该影响其他部分的执行
我们自己如何处理:
1、两种方案:
(1)
try{
可能出现异常的代码
}catch(异常类名 变量名){
针对异常的代码的处理
}finally{
释放资源的地方
}
finally:一般用于释放资源。在数据库操作或者IO流比较常见。
特点:
特点:
被finally控制的语句体一定会执行
特殊情况:在执行到finally之前jvm退出了(比如System.exit(0))
特殊情况:在执行到finally之前jvm退出了(比如System.exit(0))
简化:
try{
可能出现异常的代码
}catch(异常类名 变量名){
针对异常的代码的处理
}
(2)throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用,号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能,并不一定会发生这些异常
例:public void method() throws FileNotFoundException{}
2、多个异常处理
try多个catch如果异常间存在父子关系,那么父必须在后面
3、演示编译器异常,运行期异常
try..catch是直接对异常进行了处理,而throws则是把异常处理的事情交给了调用者
throws用在方法上,声明方法有一场,交个调用者
但是,如果是编译时期的异常,调用者就必须处理,如果是运行时期的异常,调用者可以处理,也可以不处理
4、final和finally的区别:
final:是最终的意思,可以修饰类,方法,变量
修饰类,类不能被继承
修饰方法,方法不能被重写
修饰变量,变量变常量
finally:异常处理的一部分,被finally控制的代码一定会执行,
特殊情况:在执行到finally之前,jvm退出了
4、注意
仅仅针对编译时期异常,与运行时期异常无关。
(1)子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
(2)如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
(3)如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw:
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
(2)如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
(3)如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws
5、throw和throws的区别?
throws:
用在方法声明后面,跟的是异常类名可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw:
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
private static void method2() throws FileNotFoundException{try{FileInputStream fis = new FileInputStream("D://a.txt");}catch(FileNotFoundException e){//当遇见这个异常之后,直接抛出(这就是我给出的处理方法)//如果【抛出的是编译时期异常的话,必须在方法声明上给予声明throw new FileNotFoundException();}}
0 0
- java学习之异常
- java学习之异常
- java学习之异常
- Java学习之异常
- Java学习之异常
- java学习之异常
- Java学习之异常与异常处理
- Java学习之异常:使用自定义异常
- 学习java之异常处理
- java学习之异常处理
- Java学习笔记之异常
- Java学习笔记之异常
- Java学习笔记之异常
- java学习笔记之异常
- Java学习之异常练习
- java学习之自定义异常
- Java学习之异常处理
- Java学习之异常处理
- XML学习(二)-四种XML文件写入方式
- 跨域-JSONP/CORS
- 优化Myeclipse10 Building Workspace速度慢等问题
- 个人开发者做一款Android App,android如何开发一款赚钱app
- 用户体验优化事半功倍:如何绘制客户行为轨迹图
- Java学习之异常
- WebService 和 EJB 的区别
- opencv3的图像模糊处理
- 卷积神经网络(CNN)在句子建模上的应用
- 仁兄:腾讯区块链学习后的一些粗浅观点
- 1016. 部分A+B (15)
- 《GraphQL 名词 101:解析 GraphQL 的查询语法》【译】
- 异步IO
- CAS4.2登出流程重要代码