异常类

package com.abc;

/*
 * 
 * 系统提供的异常类,不可能完全满足我们要求,
 * 年纪大小于200,所以要自己动手写
 * 
 * 方法1,继承Exception:一旦throw就要马上处理
 * 方法2,继承RuntimeException,不用处理或不用马上处理,一般自定义用这种
 * 
 * 调用自定义异常时一般是在可能产生的异常的地方(比如数据的判断后 if(uage>200)),
 * 使用关键字throw new 自定义异常;
 * 
 */
public class MyException extends RuntimeException{
    
    
    public MyException(){
        
    }
    public MyException(int age){
        System.err.println("年纪必须在200岁以内,你的年纪"+age+"有误");
    }

}
package com.abc;

import java.util.Scanner;

public class InputA {
    
    
    public static void main(String[] args) {
        
        int m = 0;
    
        for(int i = 0 ;i<5;i++){
            
            System.out.println("请输入第"+(i+1)+"个数");
            try{
                System.gc();
                Scanner sc = new Scanner(System.in);
                  int j = sc.nextInt();//如果这句发生了异常,m+=j是不会执行的
                m  += j;
                
            }catch(Exception e){
                System.out.println("第"+(i+1)+"个数输入错误");
                i--;
            }finally{
                System.out.println("无论异常是否发生,这里代码都会执行,特别是语句中有return的情况");
                //finally主要用于资源的释放,比如try中打开了文件,数据库打开等
                //finally会在一种情况下执行 System.exit(0);//程序退出
            }
        }
        System.out.println("最终结果为"+m);
    }
}
package com.abc;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
import java.util.Scanner;

/*
 * 异常是程序运行过程中出现的一点小瑕疵,如果处理得当,程序就会继续运行,
 * 如果不处理,异常就会变成错误,造成程序的退出。
 * 
 * 如何处理:在可能产生异常的代码周围使用try{可能产生异常的代码
 *                                           }catch(可能产生的异常的对象){
 *                                                  异常处理的代码
 *                                           }
 * 
 * 怎么知道哪一段会产生异常:
 * 1.经验,
 * 2.系统提示
 * 
 * 
 * 异常处理中经常程序员喜欢用一个Exception e 来处理所有的异常.
 * 因为有的语句可能产生多种异常,比如产生ArithmeticException,ArrayIndexOutOfBoundsException
 * 每种异常产生后,处理的方式是不同的,如果都写在一个catch中将非常不方便
 * 
 * 所以建议少用Exception,或者最后用exception
 * 
 * 多catch处理:
 *    处理时注意,子类应写在父类之前,即范围小的异常处理写在最前面,最后一个是Exception
 */
public class TestMain {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int a [] = new int[]{1,2,3,4,5};
        try{
            
            
           System.out.println(a[5]/1);//如果有异常就会catch抓到
        
        
        
        
        }catch(ArithmeticException aa){
            aa.printStackTrace();//这样算是处理了
        }catch(ArrayIndexOutOfBoundsException ar){
            ar.printStackTrace();//这样也算是处理了
        }catch(Exception e){
            e.printStackTrace();//处理异常,一定处理,不处理会让人理解为程序正常运行完成了
        }
             System.out.println("我是最后一句");
        
             
             Scanner sc = new Scanner(System.in);
             System.out.println("请输入一个整形");
             int i = 0;
             try{
             i = sc.nextInt();
             }catch(InputMismatchException in){
                 System.out.println("脑残,整数都输不对");
             }catch(Exception e){
                 System.out.println("主治医生");
             }
             System.out.println("你输入的数字是"+i);
             
    }

     /*
      *   请用户输入十个整数,然后输出结果,如果用户输入的不是整数,提示其再次输入
      *   用异常处理做
      *   public class Input(){
      *   
      *   
      *      public int getInt(){
      *         
      *      }
      *   }
      * 
      */
     
     
}
package com.abc;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Test2 {
  /*
   * 当一个方法A不能正确或更好处理自己代码中的异常时可以选择throws,
   * 那么当别外一个方法比如B,调用这个方法A时,B就要做出try...catch的处理,
   * 如果B做不到,可以再抛给调用 B的方法,如此反复下去可以到main方法
   * 异常无论怎么去throws最终一定要在main解决,如果main不解决而是throws 那么异常变会变error,所
   * 以开发中千万不要这么做
   */
    
    public static void main(String[] args) throws  FileNotFoundException {
        
        A3 a = new A3();        
        a.a3();
                
    }
}
class A1{
    
    
    public void a1() throws FileNotFoundException { //当异常在村里处理不了的时候,转到乡里,throws出去                
            FileInputStream fis = new FileInputStream(new File("c:/a.txt"));                
    }
    
}
class A2{
    
    public void a2() throws FileNotFoundException{
        
        A1  a = new A1();
        a.a1();        
    }
}
class A3{
    
    public void a3() throws FileNotFoundException{
        A2 a = new A2();        
            a.a2();                
    }
}

 

posted @ 2012-10-19 10:48  邹晟  阅读(167)  评论(0编辑  收藏  举报