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修真院,初学者转行到互联网行业的聚集地。"