1、检查性异常与非检查性异常区别
检查性异常: 不处理编译不能通过
非检查性异常:不处理编译可以通过,如果有抛出直接抛到控制台。
运行时异常:就是非检查性异常
非运行时异常:就是检查性异常
2、Error和Exception的区别
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
3、写出运行时异常5个
ClassCastException(类转换异常)
IndexOutOfBoundsException(数组越界)
NullPointerException(空指针)
ArrayStoreException(数据存储异常,操作数组时类型不一致)
还有IO操作的BufferOverflowException异常
4、怎么自定义一个异常?
继承Exception,在构造函数里写上你希望这个异常做的事情。 例: public class MyException extends Exception { public MyException (){ super(); //可以省略 System.out.println("这是我自定义的一个异常"); } }
5、运行时异常与非运行时异常有什么区别?
6、catch捕获异常的顺序
7、try里面有return ,是否执行finally以及执行的顺序问题
执行顺序无异常是try finally return
8、有异常并且catch中没有跳出程序块的语句时顺序是try catch finally return
有异常并且catch中有跳出程序块的语句时是try catch(执行到跳出之前) 不管是否有异常,finally 都最后执行,除非是碰到System.exit(0)
9、说说你是怎么处理异常的,throws、throw、try、catch、finally的含义?try中可以抛异常?
10、java中的异常处理机制
捕获异常: 在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适 的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并 处理
11、如何自定义异常
使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。 在程序中使用自定义异常类,大体可分为以下几个步骤。 (1)创建自定义异常类。 (2)在方法中通过throw关键字抛出异常对象。 (3)如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。 (4)在出现异常方法的调用者中捕获并处理异常
12、检查型异常和非检查型异常的主要区别在于其处理方式
检查型异常需要使用 try, catch和finally关键字在编译期进行处理,否则会出现编译器报错。对于非检查型异常则不需要这样做。Java中所有继承自 java.lang.Exception类的异常都是检查型异常,所有继承自RuntimeException的异常都被称为非检查型异常。
13、try catch finally try里面放了个return 后面的还会执行吗
return 后面的不执行,但是finally里面的会执行,除非是调用了System.exit(),那么finally里面的才不会调用