• 09-JAVA中的异常处理


    1.

    程序执行结果:

    也就是它根本就没抛出异常,更别提捕获异常了。那么,为什么会这样呢?

    原来,

    如上面程序展示,程序运行到k=i/j;的时候,就会直接终止,根本就不会运行到监视的程序,更不会运行到捕获的程序。

    结论:程序出错后,会自动终止,根本不会继续往下运行的。

    当把上面几行代码注释掉之后,结果就会一切正常。

    结果截图:

    可以看到,不光是catch里的,就连finally里的也都正常执行了。

    2. 

    为什么把类型改成double就会没事了呢?

    原因是double类型的变量在做除法运算时,是允许除数为零的。

     3.

    预测的结果:

    ArrayIndexOutOfBoundsException/内层try-catch
    发生ArithmeticException

    4.

    预测结果:ArrayIndexOutOfBoundsException/外层try-catch

    5.

    运行结果截图:

    前三个是顺序执行try里的语句,当第三个try里出现异常时,调到catch语句里,执行catch里的语句,

    执行完catch之后,再顺序执行下面的语句,finally被执行,

    再往下,

    由于没有异常了,所以,跳过catch,执行了后面的finally,

    直到最后。

    结论:有异常时,就会立刻跳出,寻找catch语句处理异常,

    一旦异常被处理好之后,那么,其余的catch语句就不会再被执行,

    但是,finally语句是无论有没有异常都会执行的语句,

    当然这也不是绝对的。

    6.

     finally并不是所有情况都执行的,

    经过我上网查资料,得知finally不执行的几种情况:

    1)在finally语句块中发生了异常。
    2)在前面的代码中用了System.exit()退出程序。
    3)程序所在的线程死亡。
    4)关闭CPU。

    7.

    源程序:

    class IllegalFormat extends Exception{
        //输入的分数格式不正确
        IllegalFormat(String m){
            super(m);
        }
    }
    
    public class ShuZu {
    
        public static void main(String[] args) throws IllegalFormat {
            
            // TODO Auto-generated method stub
    
            int control=1;
            
            System.out.println("请输入分数:");
            Scanner input= new Scanner(System.in);
            String score=new String ();  //分数
            score=input.next();   // 输入分数
            
            char score1[]=new char [100];
            
            score1=score.toCharArray();
            
            int i;
            
            
            while(control==1){
            
            
            try{
            
                for(  i=0;i<score.length();i++){
                
                    if(score1[i]<48||score1[i]>57){
                    
                        throw new IllegalFormat("您输入的分数格式不正确,应为整数格式,请重新输入:");
                
                    }
            
                }
            control=0;
            }
            catch(IllegalFormat e){
                System.out.println(e);
                score=input.next();
                score1=score.toCharArray();
            }
            }
            
            int score2=Integer.parseInt(score);
            
            
            System.out.println("这个同学:");
            
            
            if(score2>=0&&score2<60){
                System.out.println("不及格。");
            }
            else if(score2>=60&&score2<70){
                System.out.println("及格。");
            }
            else if(score2>=70&&score2<80){
                System.out.println("中。");
            }
            else if(score2>=80&&score2<90){
                System.out.println("良");
            }
            else if(score2>=90){
                System.out.println("优。");
            }
            

    程序结果截图:

  • 相关阅读:
    Ext5实现树形下拉框ComboBoxTree
    SQL常用语句整理
    第九篇——鼓掌,学籍管理系统的相关两篇报告终于写完啦!
    第八篇——源程序版本管理软件及项目管理软件
    第七篇——Mobile Apps,软件的曙光。
    第六篇——初尝Python,意犹未尽
    第五篇——C++实现四则运算
    第四篇——是什么让我们勇往直前? 兴趣使然
    第三篇——软件之殇,WE ARE THOUSANDS APART!
    第二篇——The communication during software engineering.
  • 原文地址:https://www.cnblogs.com/haojun/p/6098478.html
Copyright © 2020-2023  润新知