Java 09

Posted on 2016-11-25 20:17  立木-Six  阅读(168)  评论(0编辑  收藏  举报

一。多层的异常捕获

预测结果:ArrayIndexOutOfBoundsException/内层try-catch
发生ArithmeticException

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

二:异常抛出几点注意

     1.异常时立刻跳出,寻找 catch语句处理异常,一旦异常被处理好之后,那么,其余的catch语句就不会再被执行,但是,finally语句是无论有没有异常都会执行的语句,当然这也不是绝对的。

     2.得知finally不执行的几种情况

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

三。课堂成绩代码

import java.util.Scanner;
class ScException extends Exception{
    public ScException(){
        
    }
}
public class A {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        boolean f=true,h=true,q=true;
        Scanner s=new Scanner(System.in);
        int Sc=0;String ss;
        while(f){
            System.out.println("Please input a score:");
            ss=s.nextLine();
            for(int i=0;i<ss.length();i++){
                if((ss.charAt(i)<'0')||(ss.charAt(i)>'9'))
                    break;
                else{
                     q=false;
                     h=false;
                }
            }
            if(q){
                try{
                    throw new ScException();
                }
                catch(ScException e){
                    System.out.println("格式错误");
                }
            } 
            if(!h) //输入的是数字
            {
                Sc=Integer.parseInt(ss);
                if((Sc<0)||(Sc>100))
                {
                    try{
                        ScException x= new ScException();
                        throw x;
                    }
                    catch(ScException x){
                        System.out.println("输入异常,请输入小于100正整数");        
                    }
                }
                else
                    f=false;
            }
       
        }
        if(Sc<60)
            System.out.println("不及格");
        else if(Sc<70)
            System.out.println("及格");
        else if(Sc<80)
            System.out.println("中");
        else if(Sc<90)
            System.out.println("良");
        else if((Sc<100)||(Sc==100))
            System.out.println("优");
            
    }

}