zoukankan      html  css  js  c++  java
  • Java 异常处理

    #开始

      刚开始接触Java的时候 看不到异常处理的意义所在 真是...现在发现似乎大有用处


    #代码

      

    package ch1;
    
    import java.rmi.RemoteException;
    
    public class myException{
    
        public static void main(String[] args) throws RemoteException,myException2 {    //这里需要定义抛出的异常类
            try 
            {
                int a=3;    //修改这里抛出不同的异常
                
                if(a==1)
                {
                    throw new RemoteException("异常3");        //抛出一个默认的异常
                }
                if(a==2)
                {
                    throw new Exception("异常4");    //默认异常
                }
                if(a==3)
                {
                    throw new myException2("构造参数");    //抛出自定义异常
                }
            }catch(RemoteException e)
            {
                System.out.println("异常:" + e.getMessage());
            }catch(myException2 e)
            {
                System.out.println("异常:我自己的异常");
            }catch(Exception e)    //如果这个在catch(myException2 e)之前的话 这里就不会被执行
            {
                System.out.println("异常:" + e.getMessage());
            }finally  
            {
                System.out.println("这里的代码总会执行");
            }
            
        }
    
    }
    
    /*
     * 所有异常都必须是 Throwable 的子类。
     * 如果希望写一个检查性异常类,则需要继承 Exception 类。
     * 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。
     * ***/
    
    class myException2 extends Exception    //自定义的异常类 需要继承
    {
        public myException2(String str)
        {
            System.out.println("我自己的异常..." + str);
        }
    }

    #解释

      首先确定try和catch的用处 说说我的理解

      在try代码块儿里可能出现异常 这里的异常出现的原因可以是很多的 比如数组越界 或者除数为零的情况 会抛出不同的异常(抛出什么异常可以看这里有完整的讲解:http://www.runoob.com/java/java-exceptions.html)  

      一旦抛出异常 该代码块儿里面的代码就不执行了

      会跳转到相对应的catch代码块儿 并且执行里面的代码 

      如果可能抛出不同的异常 则自动匹配对应的catch代码块儿

      但是finally代码块儿一定会执行无论是否有异常

    #运行结果

    #遇到的问题

      1. 如果自定义了异常类 那么抛出的自定义异常所对应的catch块一定要在自定义异常类的catch块的前面 否则的话自定义异常所对应的catch块不会执行 报错

      2. 不能在一个代码块里抛出两个异常 因为下面的异常不可能执行到 因为抛出一个异常之后 就跳转到catch里面了 会报错

      3. finally代码块儿一定会执行无论是否有异常

    如果有错误 请在下面留言 提醒一下 谢谢

  • 相关阅读:
    cgal 的初步学习
    java 代理类
    java 静态内部类
    HDU-2063-过山车(最大匹配)
    HDU-1845-Jimmy's Assignment
    HDU-1528-Card Game Cheater(二分图匹配)
    HDU-1507-Uncle Tom's Inherited Land*
    HDU-1498-50years,50colors(最大匹配, 枚举)
    HDU-1281-棋盘游戏(最大匹配,枚举)
    HDU-1179-Ollivanders(二分图最大匹配)
  • 原文地址:https://www.cnblogs.com/cjdty/p/8934489.html
Copyright © 2011-2022 走看看