理,也就是说程序设计者应 该已经知道可能会收到某个 Exception(因为要 try catch 住) ,所以程序设计者应该能针对这 些不同的 Checked Exception 做出不同的处理。 而 Runtime Exception 通常会暗示着
程序上的错误,这种错误会导致程序
设计者无法处理,
而造成程序无法继续执行下去。
Java 的可控制异常处理是通过 5 个关键字来实现的:try,catch,throw,throws,finally。J B 的在线帮助中对这几个关键字是这样解释的: Throws: Lists the exceptions a method could throw. Throw: Transfers control of the method to the exception handler. Try: Opening exception-handling statement. Catch: Captures the exception. Finally: Runs its code before terminating the program. ?try 语句 try 语句用大括号{}指定了一段代码,该段代码可能会抛弃一个或多个例外。 ?catch 语句 catch 语句的参数类似于方法的声明,包括一个例外类型和一个例外对象。例外类型必须为 Throwable 类的子类,它指明了 catch 语句所处理的例外类型,例外对象则由运行时系统在 t ry 所指定的代码块中生成并被捕获,大括号中包含对象的处理,其中可以调用对象的方法。 catch 语句可以有多个,分别处理不同类的例外。Java 运行时系统从上到下分别对每个 catch 语句处理的例外类型进行检测,直到找到类型相匹配的 catch 语句为止。这里,类型匹配指 catch 所处理的例外类型与生成的例外对象的类型完全一致或者是它的父类,因此,catch 语 句的排列顺序应该是从特殊到一般。 也可以用一个 catch 语句处理多个例外类型,这时它的例外类型参数应该是这多个例外类型 的父类,程序设计中要根据具体的情况来选择 catch 语句的例外处理类型。 ? finally 语句 try 所限定的代码中,当抛弃一个例外时,其后的代码不会被执行。通过 finally 语句可以指 定一块代码。无论 try 所指定的程序块中抛弃或不抛弃例外,
也无论 catch 语句的例外类型 是否与所抛弃的例外的类型一致,finally 所指定的代码都要被执行,它提供了统一的出口。 通常在 finally 语句中可以进行资源的清除
工作。如关闭打开的文件等。不管异常是否发生 都会执行 finally 中的语句。 ?throws 语句 throws 总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。对大多数 Exc eption 子类来说, Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。 如果异常 的类型是 Error 或 RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序 的正常部分中是不期待出现的。 如果你想明确地抛出一个 RuntimeException,你必须用 thr ows 语句来声明它的类型。
? throw 语句 throw 总是出现在函数体中,用来抛出一个异常。程序会在 throw 语句后立即终止,它后面 的语句执行不到,然后在包含它的所有 try 块中(可能在上层调用函数中)从里向外寻找含 有与其匹配的 catch 子句的 try 块。所有的方法都使用“throw”语句来抛出一个异常。Throw 语句需要一个单独 throwable 对象,这个对象是任意 Throwable 类的子类。 例如: boolean testEx() throws Exception{ boolean ret = true; try { ret = testEx1(); } catch (Exception e) { System.out.println("testEx, catch exception"); ret = false; throw e; } finally { System.out.println("testEx, finally; return value="+ret); return ret; } } 4、JAVA 错误: java.lang.Error 原因: 1.对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无 法正常运行; 2.对
系统所访问的外部资源关闭次数太多,外部系统无法正常处理; 3.系统访问的外部资源出现异常情况。 解决方案: 1.访问外部资源前,首先检查该资源(如数据库)是否可正常连接或操作。 2.访问外部资源时,如果进行了