传递null该方法的执行结果是:在控制台打印aa,并抛出NullPointerException。执行流程是先执行try块,出现异常后执行finally块,最后向调用者抛出try中的异常。这种执行结果是很正常的,因为没有catch异常处理器,所有该方法只能将产生的异常向外抛;因为有finally,所以会在方法返回抛出异常之前,先执行finally代码块中的清理工作。
Java有try-catch-finally的异常处理机制,包括以下几种情况: 1、不抛出异常,try里面的代码、finally里面的代码、finally以后的代码都将正常执行,而catch里面的代码不会执行。 2、抛出异常且被catch捕获,try里面的代码部分执行,catch里面的代码、finally里面的代码、finally以后的代码都将正常执行。 3、抛出异常,但未被ca...
try、catch、finally语句块的执行顺序为:①当try没有捕获到异常时:try语句块中的语句逐一被执行,程序将跳过catch语句块,执行finally语句块和其后的语句。②当try捕获到异常,catch语句块里没有处理此异常:这种情况下,该异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally语句块后的语...
If the run-time type of V is not assignment compatible with a catchable exception class of any catch clause of the try statement, then the finally block is executed. Then there is a choice: If the finally block completes normally, then the try statement completes abruptly because of a throw...
有try 和finally没catch,有异常将抛出,但不会提示你,finally里的东西都会执行,finnally主要是关闭数据库用的,你以后就会明白try{}catch+finally的用法
try 后面也可以直接接finally不需要catch 。至于你说的第二句没太明白你的意思,反正一个异常抛出后,产生异常的try块是肯定会终止执行,而跳转到你对异常的处理语句中。
•catch-- 用于捕获异常。catch用来捕获try语句块中发生的异常。 •finally-- finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的...
三、多个try-catch-finall嵌套,方法总结: 示例: public class EmbededFinally { public static void main(String args[]) { int result; try { System.out.println("in Level 1"); try { System.out.println("in Level 2"); // result=100/0; //Level 2 ...
要看具体情况,java里的异常分2种,运行时异常和非运行时异常,如果是运行时异常,也就是不 强制catch的异常,可以省略catch,直接try finally 否则,如果不catch该异常或者没有在方法中throws,编译无法通过,也就是说要看具体的异常