对AboutException.java的理解。在try中如果发出某类系统识别的错误,会以throw的形式抛出,在catch中可以将其截获,不显示在前端,可以选择执行别的代码。

ArrayIndexOutOfBoundsException/内层try-catch

发生ArithmeticException

ArrayIndexOutOfBoundsException/外层try-catch

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

        try

        {

          System.out.println("in Level 3");

          result=100/0;  //Level 3

        }

        catch (Exception e)

        {

          System.out.println("Level 3:" + e.getClass().toString());

        }

        finally

        {

          System.out.println("In Level 3 finally");// result=100/0;  //Level 2

        }

      }

      catch (Exception e)

      {

        System.out.println("Level 2:" + e.getClass().toString());

      }

      finally

      {

        System.out.println("In Level 2 finally");// result = 100 / 0;  //level 1

      }

    }

    catch (Exception e)

    {

      System.out.println("Level 1:" + e.getClass().toString());

    }

    finally

    {

       System.out.println("In Level 1 finally");

    }

  }

}

运行结果。

in Level 1

in Level 2

in Level 3

Level 3:class java.lang.ArithmeticException

In Level 3 finally

In Level 2 finally

In Level 1 finally

总结。

这些输出验证了try,catch,finally的运行顺序。与if,else差不多。是先里层再外层的那种。

public class SystemExitAndFinally

{

  public static void main(String[] args)

{

try

{

System.out.println("in main");

throw new Exception("Exception is thrown in main");

//System.exit(0);

}

catch(Exception e)

{

System.out.println(e.getMessage());

System.exit(0);

}

finally

{

System.out.println("in finally");

}

}

}

此时运行程序,in finally不会被打印,可见catch中的退出语句生效了。但在try中退出就会报错,可见这么写是不符合规矩的。

动手动脑。

import javax.swing.JOptionPane;

public class GradeRange

{

  public static void main(String[] args)

  {

    try

    {

      String str;

      double grade;

      str = JOptionPane.showInputDialog("请输入某学生的成绩");

      //grade = Integer.parseInt(str);

      grade = Double.valueOf(str).doubleValue();

      if(grade >= 0 && grade < 60)

      {

        JOptionPane.showMessageDialog(null,"该学生不及格。");

      }

      else if(grade >= 60 && grade < 70)

      {

        JOptionPane.showMessageDialog(null,"该学生刚刚及格。");

      }

      else if(grade >= 70 && grade < 80)

      {

        JOptionPane.showMessageDialog(null,"该学生成绩中等。");

      }

      else if(grade >= 80 && grade < 90)

      {

        JOptionPane.showMessageDialog(null,"该学生成绩良好。");

      }

      else if(grade >= 90 && grade <= 100)

      {

        JOptionPane.showMessageDialog(null,"该学生成绩优秀。");

      }

      else

      {

        JOptionPane.showMessageDialog(null,"输入数字不在成绩范围内。");

      }

    }

    catch(NumberFormatException e)

    {

      JOptionPane.showMessageDialog(null,"请输入数字。");

    }

  }

}

java理论学时第七节。课后作业。的更多相关文章

  1. Java理论学时第三节。课后作业。

    如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算? 运行结果. 根据我的总结,它们三个的优先级是:构造方法 > 字段初始值 > 初始化块. 当多个类之间有继承关系 ...

  2. Java理论学时第五节。课后作业。

    随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 设计思路:先声明一个数组,再利用for循环对每一个元素赋随机生成的值,在求所有数的和,再根据要 ...

  3. Java理论学时第四节。课后作业。

    请查看String.equals()方法的实现代码,注意学习其实现方法. public class StringEquals { public static void main(String[] ar ...

  4. Java理论学时第六节。课后作业。

    package Fuction; class Grandparent { public Grandparent() { System.out.println("GrandParent Cre ...

  5. Java理论学时第二节。课后作业。

    枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象,相同的值则引用同一个对象. 可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals ...

  6. Java理论学时第一节。课后作业。

    设计思路:用nextFloat()函数将从键盘输入的值分别赋给多个变量,然后直接输出相加结果. 流程图: 源代码: 实验结果:

  7. 大道至简第一章和java理论学时第一节。感受。

    这周上了本学期的第一节java课程.课件上说了一些学习java的基本思想.举了个“愚公移山”的例子.这可能就像刚接触一门新的语言,来练习输出“HelloWorld”一样,已成惯例. “愚公移山”的这个 ...

  8. java 第七周课后作业0417

    定义一个矩形类Rectangle:(知识点:对象的创建和使用)1 定义三个方法:getArea()求面积.getPer()求周长,showAll()分别在控制台输出长.宽.面积.周长.2 有2个属性: ...

  9. 关于java' web杂谈(其实是课后作业1)1 网站系统开发需要掌握的技术

    1 网站系统开发需要掌握的技术:(借鉴度娘)https://zhidao.baidu.com/question/1701850648247880220.html 需要掌握的有:Java(JavaEE) ...

随机推荐

  1. django ORM 增删改查 模糊查询 字段类型 及参数等

    ORM 相关 #sql中的表 #创建表: CREATE TABLE employee( id INT PRIMARY KEY auto_increment , name VARCHAR (), gen ...

  2. CSS学习总结1:CSS样式

    1.CSS背景 属性 background-color:为元素设置背景色,值可以是任何合法的颜色值.实例:p {background-color: gray;} background-image:为元 ...

  3. andorid 表格布局

    tablelayout.xml表格布局 <?xml version="1.0" encoding="utf-8"?> <TableLayout ...

  4. laravel 门面的介绍和使用

    #上文讲述了laravel中怎么用容器依赖注入类的示例.其实在服务提供者上面在封装一层静态调用,这就是门面.静态调用门面,返回了容器中注册的别名和实例. #下面是测试的示例 #先创建要操作的类 < ...

  5. MySql5.5 SQL优化 慢查询日志存储

    一.MySql的慢查询日志的开启和存储 1.查看是否把没有使用索引的SQL记录到慢查询日志中,查看 log_queries_not_using_indexes 变量; show VARIABLES L ...

  6. Openflow的架构+源码剖析 转载

    Openvswitch的架构网上有如下的图表示: Openvswitch原理与代码分析(1):总体架构 Openvswitch原理与代码分析(2): ovs-vswitchd的启动 Openvswit ...

  7. You have more than one version of ‘org.apache.commons.logging.Log’ visible, which is not allowed问题解决

    https://zeroturnaround.com/forums/topic/jrebel-reports-more-than-one-version-of-org-apache-commons-l ...

  8. Python Json模块中dumps、loads、dump、load函数介绍

    1.json.dumps() json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数. import ...

  9. flask部署

    https://blog.csdn.net/zhuod/article/details/77850783

  10. rowspan和colspan的区别粗解

    rowspan和colspan是我们初学HTML表格中会在做一些特殊表格中遇到.其常在td中添加. rowspan的作用是指定纵向所跨越单元格的行数. 如下效果. colspan的作用是指定单元格横向 ...