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 代码块被执行!");

    } } }

  • 相关阅读:
    Netty相关知识积累
    Java内存管理
    使用nginx-upload-module搭建文件上传服务器
    mysql 5.7自动安装脚本
    CDH5集群搭建
    Linux常用命令
    编译原理要点四
    编译原理要点三
    编译原理要点二:
    编译原理要点
  • 原文地址:https://www.cnblogs.com/ryyy/p/13902730.html
Copyright © 2011-2022 走看看