第5章异常处理_第1页
第5章异常处理_第2页
第5章异常处理_第3页
全文预览已结束

下载本文档

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

文档简介

第 5 章 异常处理 5-1 程序中的错误有哪几种?分别能够在什么时刻被发现? 【答】 程序错误按照性质可分为 3 类:语法错、语义错、逻辑错。 1 语法错:违反语法规范的错误成为语法错( syntax error ),这类错误通常在编译时发 现,又称为编译错,如标识符未声明、表达式中运算符与操作数类型不兼容、变量赋值时 的类型与声明时的类型不匹配、括号不匹配、语句末缺少分号等。 2 语义错:如果在程序的语法上正确,但在语义上存在错误,则称为语义错( semantic error) ,又称为运行错(run-time error) ,语义错不能被编译系统发现,只有到程序 运行时才能被发现,如输入数据格式错、除数为 0 错、给变量赋予超出其范围的值错等。 3 逻辑错:如果程序通过编译,可运行,但运行结果与期望值不符,则这类错误称为 逻辑错(logic error) ,例如,由于循环条件不正确而没有结果,循环次数不对等因素导致 计算结果不正确等。 5-2 Java 为什么要采用异常处理机制?Java 的异常处理是怎样实现的?异常处理机制能够 解决程序中遇到的所有错误吗?哪些错误不是异常处理能够解决的? 【答】 异常处理和捕获和处理运行时错误的一种机制。异常处理机制使程序具有处理错误 的能力。即使发生了运行错,应用程序能够捕获异常并及时处理异常,使程序从运行错误 中很好地恢复并继续运行,而不会导致程序运行非正常终止。而且如果当前方法没有能力 处理异常,还可以将异常转交给调用者处理。异常处理机制将运行时错误封装成若干错误 类和异常类,并提供异常处理语句用于处理在程序中实现对运行时错误的发现和及时处理。 异常处理机制并不能解决程序中的所有错误,例如内存溢出、栈溢出等。 5-3 请说出 5 个 Java 的异常类。 【答】 算术异常 ArithmeticException、空对象异常 NullPointerException、类型强制转换异 常 ClassCastException、负数组长度异常 NegativeArraySizeException、数组下标越界异常 ArrayIndexOutOfBundsException 等 5-4 请问运行没有 main()方法的类会怎样? 【答】 此类错误是 Error 类,当运行没有 main()方法的类时,则产生类定义未找到的错误 (NoClassDefFoundError) 。 5-5 举例说明你在调试程序时,遇到过哪些错误和异常,采取什么办法解决问题的。 【答】1.无效的游标状态 修改:首先查看 ResultSet 是否为空,若为空则修改之;其次,也是我遇到的,就是: 举个例子说明,如下 rs.getString(1); rs.getString(3);/注意 3 和 2 的顺序颠倒了 rs.getString(2);/此时会出现异常 说明:ResultSet 只能按顺序访问列的值,不能颠倒,我猜想这可能是 JDBC 的一个 BUG 吧。不过后来我看.NET 中的 DataReader 类后才恍然大悟,原来,ResultSet 的游标每 向后移动,前面的数据就会被丢弃掉,这样做有利于提高访问速度。 2. ResultSet is closed 原因:一个 Statement 只能维持一个 ResultSet 为打开状态,后面的覆盖前面的,举个 例子: ResultSet rs1 = stmt.excuteQuery(); ResultSet rs2 = stmt.excuteQuery(); String s = rs1.getString(1);/出现异常,因为 rs1 已经被关闭 3. 连接占线导致另一个 hstmt 原因:一个 Connection 只能维持一个 Statement 为打开状态 一个例子: Statement stmt1 = con.createStatement(); Statement stmt2 = con.createStatement(); stmts.excuteQuery(sql);/出现异常 其他异常 空指针异常 空指针异常应该说是最常见的异常了 原因主要有以下几点: 1.未初始化的变量(虽然已经声明) 2.使用了未初始化的对象(虽然已经声明) 注:引起这个异常的根本原因有可能隐藏的很深,空指针异常只不过是个表象而已(又 被不幸的我遇到了). 5-6 如何处理除数为 0 异常? 【答】 进行除数运算时,先判断除数是否为 0,若为 0,则跳出提示。 5-7 怎样处理数组下标异常? 【答】 使用数组前先,判断下标是否小于数值长度,若不小于则提示数组下标有误。 5-8 说明采用什么语句能够捕获并处理异常? 【答】 Java 提供 try-catch-finally 语句来捕获和处理一个或多个异常。其中, try、catch、finally 是关键字。catch 字句可以有一个或多个,但至少要有一个 catch 字句, finally 字句可以省略。 5-9 为什么将字符串转换成数值类型时会抛出异常?抛出什么异常? 【答】 并不是所有的字符串都能转换成数值型,当遇到一个不能转转换成数值型的字符串 时,Java 抛出 NumberFormatException 异常。 5-10说明 throw 语句与 throws 子句的区别。 【答】1.throws 用于抛出方法层次的异常, 并且直接由些方法调用异常处理类来处理该异 常,所以它常用在方法的后面。比如 public static void main(String args) throws SQLException 2.throw 用于抛出代码层次的异常,

温馨提示

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

评论

0/150

提交评论