荣岩岩作业15

1.在Java的异常处理机制中,try程序块、catch程序块和finally程序块各起到什么作用?try-catch-finally语句如何使用?

程序首先执行可能发生异常的try语句块。

如果try语句没有出现运行时异常则执行完后跳至finally语句块执行;

如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。

catch语句块可以有多个,分别捕获不同类型的异常。

catch语句块执行完后程序会继续执行finally语句块。

finally语句是可选的,如果有的话,则不管是否发生异常,finally语句都会被执行。

2.说明throws与throw的作用。有什么联系和区别?

(1)、throw是在代码块内的,即在捕获方法内的异常并抛出时用的;

(2)、throws是针对方法的,即将方法的异常信息抛出去

(3)、可以理解为throw是主动(在方法内容里我们是主动捕获并throw的),而throws是被动(在方法上是没有捕获异常进行处理,直接throws的) throw 用于抛出 java.lang.Throwable 类的一个实例化对象,意思是说你可以通 过关键字 throw 抛出一个 Error 或者 一个 Exception,

如: throw new IllegalArgumentException(“size must be multiple of 2″ ) 而 throws 的作用是作为方法声明和签名的一部分,方法被抛出相应的异常以便 调用者能处理。Java 中,任何未处理的受检查异常强制在 throws 子句中声明。

3.如果try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行? 会执行,在方法返回调用前执行。准确的说是在return中间执行。 下面举个例子:

public class Test { public static void main(String[] args) {

System.out.println("结果: " + new Test().test()); }

static int test(){ int i = 1;

try { System.out.println("try里面的i : " + i);

return i; }

finally{ System.out.println("进入finally...");

++i;

System.out.println("fianlly里面的i : " + i);

//return i; } } }

结果是:try里面的i : 1 进入finally... fianlly里面的i : 2 结果: 1 结果是1,并不是大家想象的结2。

4.finally一定会被执行吗? 1. 发生异常的代码必须在try 代码块中,才有可能被执行

public class MyTest { public static void main(String[] args) {

System.out.println("main 代码块中的执行结果为:" + myMethod()); }

public static int myMethod() { int i = 0; int[] num = { 1, 2, 3 };

System.out.println(num[3]);

try { System.out.println("try 代码块被执行!");

return 0; }

catch (Exception e) { System.out.println("catch 代码块被执行!");

return 0; }

finally { System.out.println("finally 代码块被执行!");

return 2; } } }

2. public class MyTest { public static void main(String[] args) {

System.out.println("main 代码块中的执行结果为:" + myMethod()); }

public static int myMethod() {

int i = 6;

try { System.out.println("try 代码块被执行!");

//i = i/0;

return 1; }

catch (Exception e) { System.out.println("catch 代码块被执行!");

return 2; }

finally { System.out.println("finally 代码块被执行!");

} } }

原文地址:https://www.cnblogs.com/ryyy/p/13902730.html