码迷,mamicode.com
首页 > 编程语言 > 详细

黑马程序员----java基础---异常,附相关面试题

时间:2015-06-10 14:14:48      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:java   异常   throws   throw   try   

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

:异常(理解)

(1)程序出现的不正常的情况。
(2)异常的分类体系
Throwable
|--Error 严重问题,我们不处理,比如内存溢出。
|--Exception
|--RuntimeException 运行期异常,是因为我们的代码不够严谨,我们需要修正代码
|--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过
补充:如果代码在运行期出现异常,我们就在API中查找该异常类型,
如果该异常的父类是RuntimeException,就是运行期异常
父类不是RuntimeException,就是编译器的异常。

(3)异常的处理(两种方案):
A:JVM的默认处理
把异常的名称,原因,位置等信息输出在控制台,但是同时也会终止程序。
B:自己处理
a:try...catch...finally
自己编写处理代码,后面的程序可以继续执行
b:throws
把自己处理不了的,在方法上声明,告诉调用者,这里有问题
格式:throws 异常类名
注意:这个格斯必须跟在方法的()后面,例:
public static void method()throws ParseException{}
注意:尽量不要在main方法上抛出异常,但是为了讲课方便可能会这样做。
(4):try...catch...finally的处理格式
try{
可能出现问题的代码
}catch(){
针对问题的描述或者处理
}finally{
释放资源
}
注意:1,try里面的代码越少越好,这样可以节省资源
2,catch里面必须有内容,哪怕是给出一个简单的提示。
(4)面试题
A:编译期异常和运行期异常的区别?
编译期异常 必须要处理的,否则编译不通过
运行期异常 可以不处理,也可以处理
B:throw和throws是的区别
throw:
在方法体中,后面跟的是异常对象名,并且只能是一个
throw抛出的是一个异常对象,执行throw说明这里肯定有一个异常产生了
throws:
在方法声明上,后面跟的是异常的类名,可以跟多个异常类名,用逗号隔开。
表示抛出异常,有该方法的调用者来处理。
throws是声明方法有异常,是一种可能性,这个异常并不一定会产生
(5)finally关键字及其面试题
A:作用:finally用于释放资源,
特点:它的代码永远会执行。
特殊情况:在执行到finally之前jvm退出了
B:面试题
1:final,finally,finalize的区别?
final:最终的意思,可以修饰类,类不能被继承,修饰变量,变量是常量,修饰方法,方法不能被重写
finally:是异常处理的一部分,用于释放资源。一般来说,代码肯定会执行,但是如果执行到finally之前jvm退出了,就没法执行了
finalize:是Object类的一个方法,用于垃圾回收(这个方法编程时一般不会使用)
2:如果在catch里面有return,请问finally还执行吗?如果执行,在return前还是后
答:会执行,在return前执行。

实际上在中间。这个上课我们讲过
C:异常处理的变形
try...catch...finally
try...catch...
try...catch...catch...:JDK7以后可以改进:
try{
int a=3/0;
int b=arr[5];
}catch(ArithmeticException|ArrayIndexOutOfBoundsException e){
System.out.println("出问题了");
}
try...catch...catch...fianlly
try...finally:这种做法的目的是为了释放资源。
(6)自定义异常
继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可
例:
public class MyException extends Exception{
public MyException(){}
public MyException(String message){
super(message);
}
}
(7)异常的注意事项
A:父的方法有异常抛出,子的重写方法在抛出异常的时候必须要小于等于父的异常 ,建议和父类的异常一样
B:父的方法没有异常抛出,子的重写方法不能有异常抛出,如果子类方法内有异常发生,那么只能try不能throws。
C:父的方法抛出多个异常,子的重写方法只能抛出相同的异常或者父类异常的子类异常,不能抛父类没有的。
(8):如何处理异常
原则:如果该功能内部可以将问题处理,有try,如果处理不了,交由调用者处理,即用throws
区别:后续程序需要运行就try。 后续程序不需要继续运行就throws。
举例:感冒了自己吃药就能好的 try。 吃了好久都没好,就throws到医院。 医院也治不了就Error

黑马程序员----java基础---异常,附相关面试题

标签:java   异常   throws   throw   try   

原文地址:http://blog.csdn.net/qiushi_1990/article/details/46440797

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!