• Java 异常机制


    Java 异常机制

    1. 什么是异常
      异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程
    2. 为什么要有异常
      • 什么出错了
      • 哪里出错了
      • 为什么出错了
      • 通过异常可以降低错误处理代码的复杂度
    3. 异常的结构
      主要是两大类错误 error异常exception 它们均继承自Throwable
      Alt text
    • Error 表示不希望被程序捕获或者是程序无法处理的错误。 比如StackOverflowError经常由递归操作,向这样类型的操作是jvm错误我们是无法挽回的。
    • Exception 错误是假设程序猿们回去处理这些异常例如 数据库连接错误 网络连接错误,Exception也分为两种检查类型(checked)和未检查类型(unchecked)、
      • 检查型的需要强制加try catch语句
      • 非检查型的没有这些限制

    4.异常的处理机制
    Java异常处理的本质是抛出异常和捕获异常

    • 抛出异常 由上层代码进行处理

        	if(object== null){
        	    throw new NullPointerException();
        	}
      
    • 捕获异常 捕获之后由当前catch中的代码块进行操作

        try{
            //做一些可能出现异常错误的操作
        }catch(Exception e){
        	//对异常之后进行操作
        }finally{
           //无论是否出现异常都会经过这里
        }
      

    下面通过一次从磁盘中读取一个文件来演示一遍完整的异常捕获

    void fun(){
    	  int count=0;  
          InputStreamstreamReader = null;    
          try{  
              streamReader=newFileInputStream(new File("test.txt"));  
              while(streamReader.read()!=-1) {   
                 count++;  
              }  
          }catch (IOException e) {  
              e.printStackTrace();  
          }finally{  
              try{  
    	          if(streamReader != null){
    				   streamReader.close();  
    	          }  
              }catch (IOException e) {  
                 e.printStackTrace();  
              }  
          }  
    }
    

    上面我们只是获取到Java的异常且对其进行了处理,但是我们也可以获得异常之后不进行处理进行抛出
    有关抛出的有两个异常抛出关键字有两个 throwthrows 现在咱们就对其进行分析。

    • throw 程序执行完throw语句之后立即停止;throw后面的任何语句不被执行,最邻近的try块用来检查它是否含有一个与异常类型匹配的catch语句。

         void fun(){
            try{
                throw new NullPointerException();
            }catch(NullPointerException e){
                throw e;
            }
        }
        
        void fix(){
        	try{
                fun();
            }catch(NullPointerException e){
                System.out.println("Recaught: "+e);
            }
        }
      
    • throws 表示一个方法可能会抛出异常,但是这个方法不对它进行处理而是向上抛出,这样这个方法的调用者保护它自己而不发生异常。
      代码示例

        public void fun() throws Exception{
           // 做一些可能会出现异常的操作
        }
      

    根据上面那个示例来进行更改来演示throws

    	void fun() throws Exception{
    		//操作可能出现异常
    	   throw new NullPointerException();
        }
        
    	void fix(){
    		try{
                fun();
            }catch(NullPointerException e){
                System.out.println("Recaught: "+e);
            }
    	}
    

    异常使用指南

    1. 在多重Exception之后再加一个Exception的来防止异常遗漏
    2. 对于调用不确定是否出现错误的方法,用try将代码块包住。处理潜在的异常
    3. 尽量处理异常而不是就catch住然后打印错误信息
    4. 根据已有的业务逻辑来对异常进行异常逻辑操作
    5. 在一些时候尽量使用finally去释放占用的资源
  • 相关阅读:
    C#学习笔记---基础入门(二)
    微软Hololens设备 浅分析
    phpstorm 破解方法
    iOS 审核被拒,日志中找不到苹果返回的creashlog的解决办法
    flutter学习之添加第三方应用
    MAC flutter初步学习
    python Django 连接数据库失败的解决方法
    Python之学习菜鸟教程踩的坑
    Python学习之环境搭建
    tableView reload 不闪动方法
  • 原文地址:https://www.cnblogs.com/wangshouchang/p/7545883.html
Copyright © 2020-2023  润新知