Java基础——异常处理

异常:程序出现了不正常的情况

举例:

今天天气很好,班长出去旅游。骑着偷来的摩拜。去火炉山接近大自然,吸收新鲜空气。

问题1:火炉山塌陷了,班长及时踩住了刹车,但是去不了火炉山了。严重问题

问题2:班长骑着偷来的摩拜,发现摩拜没气,把气给吹了起来。出发前就检查好的问题

问题3::班长骑着摩拜在山路上惬意的行驶着,山路两边有小石子。中间是平坦的道路。

本来一直在平坦的道路行驶是没有任何问题的,但是班长喜欢炫技,偏偏喜欢在小石子上面飙车,结果爆胎了。

作死问题。

程序的异常:Throwable

严重异常:Error 我们不进行任何处理,这种问题一般是非常严重的,比如说内存进行非常严重溢出

问题异常:Exception(RuntimeException)

编译期异常:不是RuntimeException的异常,我们就必须处理,因为你不处理程序就不然你通过编译

运行时异常:RuntimeException 这种问题我们可以不处理,因为这个问题是你的问题,而且这个问题的出现肯定是我们代码的不严谨造成的。需要我们修正代码

如果程序出现了问题,我们没有做任何的处理,最后JVM会帮我们做默认的处理

把异常的名称进行输出,原因以及出现的问题等相关信息输出到控制台

同时还会结束程序的运行

我们自己如何处理异常呢?

a.try....catch...finally 自己处理

b.throws 抛出

try....catch...finally 异常的处理格式:

try{

存放可能或出现异常的代码;

}catch(){

异常出现之后该怎么处理的代码;

}finally{

不管异常是否出现,都必须要处理的代码;

}

变形的格式:

try{

存放可能或出现异常的代码;

}catch(异常名 变量){

异常出现之后该怎么处理的代码;

}

e.getMessage():返回异常的消息字符串

e.toString():返回异常的简短描述

java.text.ParseException : Unparseable date: "2018-02-05"

此对象的类的name的全名路径 : 调用了getMessage的异常信息

有些时候,我们是可以不对问题代码进行异常处理,但是又些时候我们是没有这个权限去处理某个异常

或者说,这个异常我没有能力解决,那我就不处理了

为了解决出错的问题,java就针对这种情况,提供了另一种方案:异常抛出

格式:

throws 异常类名

注意:这个格式必须跟在方法的括号后面

注意:

我们尽量不要在main方法进行异常抛出。

但是为了讲课,我会经常这样做。

小节:

编译期出现异常,调用者必须处理

运行时异常,将来的调用者可以不处理

finally:被finally控制的语句一定会被执行

注意:如果说执行到finally之前,jvm就退出了,那么他就不会执行

面试题:

1.final,finally,finalize的区别?

final:最终的意思,可以修饰类、成员变量、成员方法

finally:异常处理的一部分,用于释放资源

finalize:Object的一个方法,用于垃圾回收

2.如果catch里面有return语句,请问,finally里面的代码还会被执行么?

如果会,请问是return前,还是return后??

会,前

---------------------

Java。大家都知道,我们是学Java全栈的,大家就肯定以为我有全套的Java系统教程。没错,我是有Java全套系统教程,进扣裙【47】974【9726】所示,今天小编就免费送!~

“我们相信人人都可以成为一个程序员,现在开始,找个师兄,带你入门,学习的路上不再迷茫。这里是ja+va修真院,初学者转行到互联网行业的聚集地。"

你可能感兴趣的:(Java基础——异常处理)