zoukankan      html  css  js  c++  java
  • 异常处理动手动脑

    1.阅读以下代码,写出程序运行结果

    运行结果:

    2.写出CatchWho2.java的运行结果:

    运行结果:

     3.阅读EmbededFinally,java示例,并运行它,观察其输出并进行总结:

    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");

    }

    }
    }

    总结:当有多层嵌套的finally时,异常在不同层次抛出,在不同的位置抛出,可能会导致不同的finally语句块执行顺序

    4.finally语句块一定会执行吗?,请通过SystemExitAndFinally,java示例程序回答上述问题。

    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");

    }

    }
    }

    回答:如果finally块中的代码过多会导致字节码条数”膨胀”,因为finally中的字节码会被”复制”到try块和所有的catch块中,出异常了。System.out.println("F")不在finally里。而只有finally里的语句才会不论如何都会执行。

    5.自行归纳总结java多层嵌套异常处理的基本流程

    1)在java语言中,通常将可能出现异常的语句放入try{}语句中,将出现错误后需要执行的语句放入到catch{}语句中,将无论是否发生异常都要执行的语句放在finally{}语句中。

    2)当程序执行出现异常的时候,系统会抛出一个异常,然后由try{}语句中中出现异常的地方转到catch{}语句中。不过不管有没有异常产生,finally{}中的语句都将执行。

    3)如果系统出现系统错误或者运行Runtime异常,jvm会结束程序运行,不一定会执行finally{}中的语句。

    4)如果try{}中产生的异常在catch中没有处理,系统将停止程序,也不会执行finally中的语句。

    6.编写一个程序,此程序在运行时要求用户输入一个整数,代表某门课程的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。

    编程源代码:

    import javax.swing.JOptionPane;//引用消息框
    public class chengji {//创建一个公共类
    public static void main(String[] args){//java入口方法
    for(;;)//无限循环语句
    {
    String a = JOptionPane.showInputDialog("请输入一个成绩:");//提示框提示输入一个数
    try{
    int b = Integer.parseInt(a);//强制类型转换
    if(b>0&&b<60){
    JOptionPane.showMessageDialog(null,
    "不及格!");//消息提示框提示
    break;//跳出循环
    }
    else if(b>=60&&b<=70)
    {
    JOptionPane.showMessageDialog(null,
    "及格!");//消息提示框提示
    break;//跳出循环
    }
    else if(b>70&&b<=80)
    {
    JOptionPane.showMessageDialog(null,
    "成绩中等!");//消息提示框提示
    break;//跳出循环
    }
    else if(b>80&&b<=90)
    {
    JOptionPane.showMessageDialog(null,
    "成绩良好!");//消息提示框提示
    break;//跳出循环
    }
    else if(b>90&&b<=100)
    {
    JOptionPane.showMessageDialog(null,
    "成绩优秀!");//消息提示框提示
    break;//跳出循环
    }
    else if(b>100||b<0)
    {
    JOptionPane.showMessageDialog(null,
    "您输入的成绩超出范围,请重新输入!");//消息提示框提示
    }
    }
    catch(Exception e){
    JOptionPane.showMessageDialog(null,
    "您的输入有误,请重新输入!");//消息提示框提示
    }
    }

    }
    }

    运行结果:

  • 相关阅读:
    angularJS之基础知识(一)
    angularJS之$http:与服务器交互
    angualrJS之表单验证
    python实现命令行中的进度条原理
    通过Arcpy在ArcMap工具箱中添加脚本计算面图层的起终点坐标
    关于ArcGIS API for JavaScript中basemap的总结介绍(一)
    初学JAVA--分支语句
    移动端开发通用适配
    js中Number.toFixed()方法的理解
    <div>标签仿<textarea>。contentEditable=‘true’,赋予非表单标签内容可以编辑
  • 原文地址:https://www.cnblogs.com/2016excellent-3584/p/7846343.html
Copyright © 2011-2022 走看看