首页 > 编程语言 > 详细

java基础篇——异常处理

时间:2020-08-18 22:29:34      阅读:84      评论:0      收藏:0      [点我收藏+]

异常

1概述

程序有可能出现问题,我们把出现的问题就称为异常.

2主函数处理异常的方式:

A:主函数手动处理方式的方式.(异常处理机制)

B:采用的是jvm的默认处理机制.

把异常的信息打印输出到控制台.

3异常的体系结构

AThrowable 异常的超类

Error:

我们不可解决的问题。面对此种问题,我们无能为力。

比如说:类不存在或者内存溢出。

Exception:

在运行时运行出现的一些不正常的状况,这个状况我们通过修改代码,是可以解决的。

举例:骑自行车回家。

走不好的路,车爆胎,是异常。

发洪水,路给冲断了,是错误。

 2020年,疫情这个东西来了,就是错误。

头疼,感冒了。是异常。

B:通过分析,发现我们要学习异常。

4异常的处理方式

A:try...catch...finally

**基本格式

try{

//有可能出现异常的代码

}catch(异常类 名字){

//处理异常的代码

}finally{

//一定会被执行的代码,如释放资源

}

**变形格式

try...catch

try...catch...catch...catch...

try...finally

try...catch...finally

try...catch...catch...finally

**finally的特点

它永远都会被执行.

有一个特殊情况:如果在代码中jvm退出系统而来,那么finally就不会被执行.

**面试题

***final,finally,finalize区别?

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码……

  finally是异常处理语句结构的一部分,表示总是执行。

finalizeObject类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用

***

try{

System.out.println("aaa");

System.out.println(10/0);//ArithmeticException

}catch(Exception e){

System.out.println("bbb");

return;

}finally{

System.out.println("ccc");

}

请问这个程序运行结果?

aaa

bbb

ccc

B:throws,throw 抛出

区别:------一旦执行throw语句,就结束功能!

**使用位置

throws在方法的声明上使用

throw在方法体内使用

**使用格式

throws后面跟的使用异常的类名

throw后面跟的是对象.格式:throw new 异常类名(参数);

**联系

throws不一定有throw

throw一定有throws

C:两种处理方式用哪种呢?<何时使用try,何时使用throw?>

**自己能够处理的就自己处理.

**自己实在处理不了的交调用者.

5Exception的分类

A:Exception

这种类型的异常,如果抛出,在编译的时候就会检查.此类异常需要编写针对性的处 理代码进行处理。

B:RuntimeException

这种类型的异常,如果抛出,在编译的时候不检查,运行的时候直接处理.

异常必须通过修改代码才能解决.所以,一般针对这异常,我们不处理,jvm

6、自定义异常

除数不能为负数.

1:继承自Exception或者RuntimeException.必须的!

2:在自定义异常里面,提供一个带参构造

 1 class MyException extends Exception{
 2 
 3 MyException(){}
 4 
 5 MyExcepiton(String message){
 6 
 7 super(message);
 8 
 9 }
10 
11 }
12 
13 class Demo{
14 
15 int div(int a,int b)throws RuntimeException{
16 
17 if(b<0){
18 
19 throw new MyException("除数不能为负数!");
20 
21    }
22 
23  }
24 
25

 

7、异常使用细节

A:我们为什么要使用trycatch语句进行异常处理呢?只有在某个功能上可能出现某种隐患,并且在该功能的声明上进行了描述时,我们才能够使用此种针对性的处理方式。

B:如果一个功能抛出多个异常,那么在调用该功能时,需要有多个catch进行每一个异常的针对性处理,如果多个catch中有父类异常,一定要定义在最下面,否则编译失败。

C:函数内抛出异常,函数上一定要使用thows进行标识,调用者如果调用了该函数,就需要对其进行处理(try或者抛出),否则编译失败。

java基础篇——异常处理

原文:https://www.cnblogs.com/rookie-10/p/13526301.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!