• 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代码块儿一定会执行无论是否有异常

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

  • 相关阅读:
    个人永久性免费-Excel催化剂功能第86波-人工智能之图像OCR文本识别全覆盖
    git删除远程仓库的文件或目录
    使用document.execCommand复制内容至剪贴板
    使用clipboard.js实现复制内容至剪贴板
    正则匹配目标字符串不等于某些特定的字符串
    substr与substring的用法
    使用hexo搭建个人博客
    git修改最后一次commit的内容
    gulp压缩文件最简示例
    gulp最简示例
  • 原文地址:https://www.cnblogs.com/cjdty/p/8934489.html
Copyright © 2020-2023  润新知