1.throw 和 throws 的区别?
答:
throw则是指抛出的一个具体异常类型
throws是用来声明一个方法可能抛出的所有异常信息
2.异常的抛出,throws、throw、try、catch、finally分别有什么意义 10
(1)try:指定一块预防所有“异常”的程序。
(2)catch:紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的“异常”的类型。
(3)throw:用来明确地抛出一个“异常”。
(4)throws:标明一个成员函数可能抛出的各种“异常”。
(5)finally:不管发生什么“异常”都被执行一段代码
3. try-catch-finally 中哪个部分可以省略?
答:try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同时省略,也就是说有 try 的时候,必须后面跟一个 catch 或者 finally
4. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
答:一定会, catch 中 return会等finally中的代码执行完之后才会执行
5. 常见的异常类有哪些?
NullPointerException 空指针异常
ClassNotFoundException 指定类不存在
NumberFormatException 字符串转换为数字异常
IndexOutOfBoundsException 数组下标越界异常
ClassCastException 数据类型转换异常
FileNotFoundException 文件未找到异常
NoSuchMethodException 方法不存在异常
IOException IO 异常
SocketException Socket 异常
6.NoClassDeFoundError和ClassNotFoundException的区别?
首先NoClassDeFoundError是一个错误,ClassNotFoundException是一个异常。ClassNotFoundException的产生原因,Java支持使用Class.froName方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法都将导致该类被加载到JVM内存中,如果这个类在类路径中没有被找到,那么此时就会在运行时抛出ClassNotFoundException异常。另外还有一个导致ClassNotFoundException的原因就是,当一个类已经被某个类加载器加载到内存中,此时另一个类加载器又尝试着动态地从同一个包中加载这个类。NoClassDeFoundError产生的原因在于:如果JVM或者ClassLoader实例尝试加载类的时候找不到类的定义。例如要查找的类在编译的时候是存在的,运行的时候找不到了。这个时候就会导致NoClassDefFoundError。造成该问题的原因可能是打包过程中漏掉了部分类,或者jar包出现损坏或者篡改。解决这个问题的办法就是查找那些在开发期间存在与类路径下,但在运行期间却不在类路径下的类。
7.请对比Exception和Error,另外,运行时异常与一般异常有什么区别?
典型回答:
Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本组成类型。Exceptoin和Error体现了Java平台设计者对于不同异常情况的分类。Exception是程序正常运行中,可以预料的意外情况,可以并且应该被捕获,进行相应处理。Error是指在正常情况下,不大可能出现的情况,绝大部分的Error都会导致处于非正常的不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如OutofMemoryError之类,都是Error的子类。
Exceptoin又分为可检查异常和不检查异常,可检查异常在代码里必须显示地进行捕获处理,这是编译器检查的一部分。不检查异常就是所谓的运行时异常,类似于NullPointerException ArrayIndexOutofBoundsException之类,通常是可以编码避免的逻辑错误,具体根据需要来进行判断是否需要捕获,并不会在编译期强制要求。
未完待续。。。。将不定时更新
网友评论