Java新教材第六章面试题.doc_第1页
Java新教材第六章面试题.doc_第2页
Java新教材第六章面试题.doc_第3页
Java新教材第六章面试题.doc_第4页
Java新教材第六章面试题.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 6 章 异常处理 159 6 1 异常概述 159 什么是异常 答案 在程序的开发过程中产生的一些错误 6 2 Java 中的异常 160 6 2 1 Error Exception 层次关系 160 请简要介绍 Error 和 Exception 的层次关系 答案 在 Java 中 异常对象分为两大类 Error 和 Exception Error 类和 Exception 类都是 Throwable 类的子类 Error 类只有四个子类 AWTError LinkageError VirtualMachineError 以及 ThreadDeat 正如前面所述 它处理的是 Java 运行系统中的内部错误以及资源耗尽等情况 这种情况是程序 员所无法掌握的 我们只有通知用户并安全退出程序的运行 而 Exception 的子 类就很多了 可以大致将它的子类分为三类 有关 I O 的 IOException 有关运 行时的异常 RuntimeException 以及其它的异常 RuntimeExcepiton 异常是由于程 序编写过程中的不周全的代码引起的 而 IOException 是由于 IO 系统出现阻塞 等原因引起的 error 和 exception 有什么区别 答案 error 表示恢复不是不可能但很困难的情况下的一种严重问题 比如说内 存溢出 不可能指望程序能处理这样的情况 exception 表示一种设计或实现问 题 也就是说 它表示如果程序运行正常 从不会发生的情况 6 2 2 异常示例 160 6 3 处理 Exception 163 6 3 1 常见异常 163 引起 RuntimeException 异常的原因有很多 请举两个例子 答案 RuntimeException 常见的异常有哪些 答案 VI 引起 IOException 异常的原因有很多 请举两个例子 答案 IOException 常见的异常有哪些 答案 运行时异常与一般异常有何异同 答案 异常表示程序运行过程中可能出现的非正常状态 运行时异常表示虚拟机 的通常操作中可能遇到的异常 是一种常见运行错误 java 编译器要求方法必须 声明抛出可能发生的非运行时异常 但是并不要求必须声明抛出未被捕获的运行 时异常 6 3 2 Java 中的异常处理机制 163 6 3 3 通过 try catch finally 来处理异常 164 try 里有一个 return 语句 那么紧跟在这个 try 后的 finally 里的 code 会不会 被执行 什么时候被执行 在 return 前还是后 答案 也许你的答案是在 return 之前 但往更细地说 我的答案是在 return 中间 执行 请看下面程序代码的运行结果 public class Test param args add by zxx Dec 9 2008 public static void main String args VII TODO Auto generated method stub System out println new Test test static int test int x 1 try return x finally x 执行结果 1 运行结果是 1 为什么呢 主函数调用子函数并得到结果的过程 好比主函数准 备一个空罐子 当子函数要返回结果时 先把结果放在罐子里 然后再将程序逻 辑返回到主函数 所谓返回 就是子函数说 我不运行了 你主函数继续运行吧 这没什么结果可言 结果是在说这话之前放进罐子里的 6 3 4 异常类的继承 168 6 3 5 访问异常信息 169 6 3 6 使用 throws 声明抛出异常 170 请写出 throws 抛出异常的思路和 JVM 对异常的处理方法 答案 使用 throws 声明抛出异常的思路是 当前方法不知道应该何处处理这种 类型的异常 该异常应该由上一级调用者处理 如果 main 方法也不知道应该如 火如荼处理这种类型的异常 也可以使用 throws 声明抛出异常 该异常将交给 JVM 处理 JVM 对异常的处理方法是 打印异常跟踪信息 并终止程序运行 这就是前面程序在遇到异常后自动结束的原因 6 3 7 使用 throw 抛出异常 174 6 3 8 捕获异常和抛出异常结合使用 174 6 3 9 进行方法重写时对异常的处理 175 6 4 自定义异常类 176 6 4 1 自定义异常类 176 6 4 2 通过 printStackTrace 追踪异常源头 178 6 5 异常处理规则 179 VIII 6 5 1 不过度使用异常 179 过度使用异常会产生什么影响 答案 6 5 2 不使用庞大的 try 块 179 使用庞大的 try 块是否合理 如果不合理 有什么解决办法 答案 不合理 因为在一个 try 块中放置大量的代码看上去简单了 其实只是在 编写程序的时候看上去比较简单 因为 try 块里的代码过于庞大 业务过于复杂 造成 try 块中出现异常的可能性增大 从而导致分析异常原因说很麻烦 当 try 块过于庞大的时候 就难免在 try 块后紧跟着大量的 catch 块才可以针对不 同异常提供不同的处理逻辑 同一个 try 块后紧跟着大量 catch 块则需要分析它 们之间的逻辑关系 导致了程序的复杂性增加 解决方法 可以把大块的 try 块分割成多个可能出现异常的程序段落 并把它们 放在单独的 try 块中 从而分别捕获并处理异常 6 5 3 不要忽略捕获到的异常 179 捕获到异常后 不对异常进行处理是否合理 catch 块可以对异常采取什么适当 的措施 答案 既然捕获异常 那 catch 块应该做一些有用的事情 处理这个异常 如果 catch 块为空或者是仅仅打印了语句就不能很好的发挥 catch 块的作用 请写出不少于三个在处理异常时需要注意的事项 答案 既然捕获了异常 就要对它进行适当的处理 不要捕获异常之后又把它 丢弃 不予理睬 在 catch 语句中尽可能指定具体的异常类型 必要时使用多 个 catch 不要试图处理所有可能出现的异常 保证所有资源都被正确释放 充分运用 finally 关键词 在异常处理模块中提供适量的错误原因信息 组织错 误信息使其易于理解和阅读 例如当前正在执行的类 方法和其他状态信息 包 括以一种更适合阅读的方式整理和组织 printStackTrace 提供的信息 尽量减 小 try 块的体积 全面考虑可能出现的异常以及这些异常对执行流程的影响 Java 中的异常处理机制的简单原理和应用 答案 异常是指 java 程序运行时 非编译 所发生的非正常情况或错误 与现 IX 实生活中的事件很相似 现实生活中的事件可以包含事件发生的时间 地点 人 物 情节等信息 可以用一个对象来表示 Java 使用面向对象的方式来处理异常 它把程序中发生的每个异常也都分别封装到一个对象来表示的 该对象中包含有 异常的信息 Java 对异常进行了分类 不同类型的异常分别用不同的 Java 类表示 所有异常 的根类为 java lang Throwable Throwable 下面又派生了两个子类 Error 和 Exception Error 表示应用程序本身无法克服和恢复的一种严重问题 程序只有 死的份了 例如 说内存溢出和线程死锁等系统问题 Exception 表示程序还能 够克服和恢复的问题 其中又分为系统异常和普通异常 系统异常是软件本身缺 陷所导致的问题 也就是软件开发人员考虑不周所导致的问题 软件使用者无法 克服和恢复这种问题 但在这种问题下还可以让软件系统继续运行或者让软件死 掉 例如 数组脚本越界 ArrayIndexOutOfBoundsException 空指针异常 NullPointerException 类转换异常 ClassCastException 普通异常是运行环 境的变化或异常所导致的问题 是用户能够克服的问题 例如 网络断线 硬盘 空间不够 发生这样的异常后 程序不应该死掉 java 为系统异常和普通异常提供了不同的解决方案 编译器强制普通异常必须 try catch 处理或用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论