· finally语句
try所限定的代码中,当抛弃一个例外时,其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛弃或不抛弃例外,也无论catch语句的例外类型是否与所抛弃的例外的类型一致,finally所指定的代码都要被执行,它提供了统一的出口。通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等。不管异常是否发生都会执行finally中的语句。
·throws语句
throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是Error或 RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序的正常部分中是不期待出现的。 如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。
· 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)访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一次关闭操作。
3)尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程序的执行效率
5、空指针错误 :java.lang.NullPointerException
使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的JAVA数据类型(double,float,boolean,char,int,long)一般不会引起空指针异常。由此可见,空指针异常主要跟与对象的操作相关。
下面先列出了可能发生空指针异常的几种情况及相应解决方案:
不管对象是否为空就直接开始使用。
(JSP)代码段1:
out.println(request.getParameter("username"));
描述:
代码段1的功能十分简单,就是输出用户输入的表域"username"的值。