异常

public class 处理Exception {
    public static void main(String []ages){

    //产生异常
    
    //除0异常
    
    //1.捕获
    
    try
    {
    //int i=12/0;
    //int 出现了异常直接跳到catch
    
    String a=null;
//    a.length();
    
    //打开一些资源
    String s=" ";
    System.out.println("打开资源");
        
    //使用
    System.out.println("使用资源");
    //如果在使用中出现异常
    a.length();
    
    //关闭资源并释放
    //可能不被执行,放入finall里
    //System.out.println("希望一定要执行的关闭资源,释放内存代码");
    
    }
    
    catch(ArithmeticException ex){
        //针对特定的异常进行特别的处理
        //除0;
        System.out.println("捕获了ArithmeticException的异常");
        //获取异常信息
        String str= ex.getMessage();
        
        //处理方式显示;记录日志
        System.out.println("异常信息="+str);
        
        //把异常详细信息输出到控制台
        ex.printStackTrace();
        
        System.out.println();
    }
    
    catch(NullPointerException ex){
        //针对特定的异常进行特别的处理
        //空值
        System.out.println("捕获了NullPointerException的异常");
        //获取异常信息
        String str= ex.getMessage();
        
        //处理方式显示;记录日志
        System.out.println("异常信息="+str);
        
        //把异常详细信息输出到控制台
        ex.printStackTrace();
        
        System.out.println();
    }
    
    //兜底
    catch(Exception ex){
        //针对特定的异常进行特别的处理
        
        System.out.println("捕获了Exception的异常");
        
        //获取异常信息
        String str= ex.getMessage();
        
        //处理方式显示;记录日志
        System.out.println("异常信息="+str);
        
        //把异常详细信息输出到控制台
        ex.printStackTrace();
        
        System.out.println();
    }
    
    finally//一定会被执行的代码
    {
        
        System.out.println("希望一定要执行的关闭资源,释放内存代码");
    }
    
    System.out.println("程序还在走");
    
    //即使发生异常也会执行finally
//    try{int i=12/0;}
//    finally{
//        System.out.println("hehe");
//    }
    
    
    }
public class MyThrow {
    
    //把 throws放在方法的后面 特别声明有可能出现的异常
    //方法本身不处理,交给调用者处理
    //抛出异常,显示给使用者错误的原因
    public int chu(int a,int b)throws Exception
    
    {   if(b==0){
        Exception e=new Exception("b输入错误");
        throw  e;
    }
        return a/b;
    }
    
    //自己定义异常
    public void test() throws Exception{
        
        //自己定义
        Exception e=new Exception("我自定义的异常信息");
        throw  e;
    }
    
    
    
     public static void main(String []ages) throws Exception 
     //main方法里需要解决问题而不是抛出
     {
        
         MyThrow a=new MyThrow();
        
//         try {
//            a.chu(10, 0);
//        }
//         catch (Exception e) {
//            // TODO 自动生成的 catch 块
//            //e.printStackTrace();
//            System.out.println("我捕获了类常"+e.getMessage());
//            
//            throw e;//处理后抛出异常
//        }
         
         
         //运行自定义的错误信息
        try{a.test();}
        
        catch(Exception e){
         System.out.println(e.getMessage());
         }
         
         a.chu(10, 0);
         
         System.out.println("结束了");
         
    }
原文地址:https://www.cnblogs.com/storm47/p/5274503.html