zoukankan      html  css  js  c++  java
  • 荣岩岩作业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 代码块被执行!");

    } } }

  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/ryyy/p/13902730.html
Copyright © 2011-2022 走看看