Java异常常见⾯试题
一到六年级的古诗
1. 什么是Java中的异常?
异常是指程序在运⾏过程中发⽣的⼀些不正常事件。(如:除0溢出,数组下标越界,所读取的⽂件不存在)
2. Java中的异常处理关键字是什么?
1. throw:有时我们明确要创建异常对象然后抛出它来停⽌程序的正常处理。throw关键字⽤于向运⾏时抛出异常来处理它。
2. throws:当我们在⽅法中抛出任何已检查的异常⽽不处理它时,我们需要在⽅法签名中使⽤throws关键字让调⽤者程序知道该⽅法可
能抛出的异常。调⽤⽅法可以处理这些异常或使⽤throws关键字将其传播给它的调⽤⽅法。我们可以在throws⼦句中提供多个异常,也可以与main()⽅法⼀起使⽤。
3. try-catch:我们在代码中使⽤try-catch块进⾏异常处理。try是块的开始,catch是在try块的末尾处理异常。我们可以使⽤try有多个
catch块,try-catch块也可以嵌套。catch块需要⼀个应该是Exception类型的参数。
4. finally:finally块是可选的,只能⽤于try-catch块。由于异常会暂停执⾏过程,因此我们可能会打开⼀些不会关闭的资源,因此我们
可以使⽤finally块。finally块总是被执⾏,⽆论是否发⽣异常。数学二次函数
3.Java中的检查型异常和⾮检查型异常有什么区别?
法式西餐检查型异常和⾮检查型异常的主要区别在于其处理⽅式。检查型异常都需要使⽤try,catch 和finally 关键字在编译器进⾏处理,否则会出现编译器报错。对于⾮检查型异常则不需要这样做。Java中所有继承 Exception 的类的异常都是检查型异常,所有继承RuntimeException 的异常都被称为 ⾮检查型异常。
4. error和exception有什么区别?
1. error 表⽰恢复不是不可能但很困难的情况下的⼀种严重问题。⽐如说内存溢出。不可能指望程序能处理这样的情况。
2. exception 表⽰⼀种设计或实现问题。也就是说,它表⽰如果程序运⾏正常,从不会发⽣的情况。
5. final, finally, finalize的区别?
1. final⽤于声明属性,⽅法和类,分别表⽰属性不可交变,⽅法不可覆盖,类不可继承。
2. finally是异常处理语句结构的⼀部分,表⽰总是执⾏。
3. finalize是Object类的⼀个⽅法,在垃圾收集器执⾏的时候会调⽤被回收对象的此⽅法,供垃圾收集时的其他资源回收,例如关闭⽂件
兴高采烈近义词等(在垃圾回收的时候会调⽤被回收对象的此⽅法)
6. Java 中什么是异常链?
异常链是指在进⾏⼀个异常处理时抛出了另外⼀个异常,由此产⽣了⼀个异常链条,⼤多⽤于将受检查异常(checked exception)封装成为⾮受检查异常(unchecked exception)或者 RuntimeException。特别注意如果你因为⼀个异常⽽决定抛出另⼀个新的异常时⼀定要包含原有的异常,这样处理程序才可以通过 getCau() 和 initCau() ⽅法来访问异常最终的根源
7. .try-catch-finally-return执⾏顺序?
1. 不管是否有异常产⽣,finally块中代码都会执⾏
2. 当try和catch中有return语句时,finally块仍然会执⾏感悟人生的诗句
3. finally是在return后⾯的表达式运算执⾏的,所以函数返回值在finally执⾏前确定的,⽆论finally中的代码怎么样,返回的值都不会
改变,仍然是之前return语句中保存的值
4. finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值
8. 列出常见的⼏种RunException?
NullPointerException - 空指针引⽤异常
ClassCastException - 类型强制转换异常
IllegalArgumentException - 传递⾮法参数异常
ArithmeticException - 算术运算异常
富厚ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建⼀个⼤⼩为负数的数组错误异常
NumberFormatException - 数字格式异常战争大片
SecurityException - 安全异常
UnsupportedOperationException - 不⽀持的操作异常
NegativeArrayException - 数组负下标异常
EOFException - ⽂件已结束异常
FileNotFoundException - ⽂件未找到异常
SQLException - 操作数据库异常
立法监督IOException - 输⼊输出异常
NoSuchMethodException - ⽅法未找到异常
java.lang.AbstractMethodError - 抽象⽅法错误。当应⽤试图调⽤抽象⽅法时抛出。
java.lang.AsrtionError - 断⾔错。⽤来指⽰⼀个断⾔失败的错误。
java.lang.ClassCircularityError - 类循环依赖错误。在初始化⼀个类时,若检测到类之间循环依赖则抛出该异常。
java.lang.ClassFormatError - 类格式错误。当Java虚拟机试图从⼀个⽂件中读取Java类,⽽检测到该⽂件的内容不符合类的有效格式时输出。
java.lang.Error - 错误。是所有错误的基类,⽤于标识严重的程序运⾏问题。这些问题通常描述⼀些不应被应⽤程序捕获的反常情况。9. Java异常类的重要⽅法是什么?
1. 异常及其所有⼦类不提供任何特定⽅法,并且所有⽅法都在基类Throwable中定义。
2. String getMessage():此⽅法返回消息String of Throwable,并且可以在通过构造函数创建异常时提供消息。
3. String getLocalizedMessage():提供此⽅法,以便⼦类可以覆盖它以向调⽤程序提供特定于语⾔环境的消息。此⽅法
getMessage()的可抛出类实现只是使⽤⽅法来返回异常消息。
4. synchronized Throwable getCau() :此⽅法返回异常的原因或null id,原因未知。
5. String toString():此⽅法以String格式返回有关Throwable的信息,返回的String包含Throwable类和本地化消息的名称。
6. void printStackTrace() :此⽅法将堆栈跟踪信息打印到标准错误流,此⽅法已重载,我们可以将PrintStream或PrintWriter作为参
数传递,以将堆栈跟踪信息写⼊⽂件或流。