zoukankan      html  css  js  c++  java
  • throw和throws的区别和联系

        突然发现今天诗兴大发,看来又得写点内容了。

       throw和throws对于Java程序员而言它们真的不是很陌生。但对于我这样的选手而言一提到它们的区别和联系就蒙圈了...

       为了以后不蒙圈,今天就研究一下吧~~

       如果有不足的地方欢迎批评指正...

       1)throws

        对于throws关键字而言一般用于抛出编译时的异常,如果某个异常是编译是异常,那么这个异常就需要捕获(try{}catch{}finally{})

        或者抛出(throws)。否者的话是无法通过编译的。

        这里再简单讲讲二者的区别

        对于try{}catch{}finally{}而言,相应的异常已经在程序里面捕获。相应的catch中也已经处理了相关的异常,不会再向上抛出。上层

        调用者是不需要进行任何处理的。

        对于throws而言,当前程序不会对异常进行任何处理,如果出现异常的话,仅仅抛出而不做处理,对应的处理需要上层来负责。对应的

        上层调用者必须处理这个异常或者继续向上抛出对应的异常。

        说白了以公司为例:

        客户给开发提了一个bug,如果开发人员能够处理(try{}catch{}finally{}),就自己处理了,不会在告诉项目经

        理。但是如果开发处理不了,开发就会找项目经理(开发的throws)如果项目经理能够处理,就搞定(try{}catch{}finally{}),如果

        搞不定 就找总经理(项目经理的throws)反正最终为题会被处理的(不敢不处理啊,客户是上帝啊~~哈哈)

         下面是一个throws的简单例子:

        

    package com.yonyou.test;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    
    /**
     * 测试类
     * @author 小浩
     * @创建日期 2015-3-2
     */
    
    public class Test{
    	public static void main(String[] args) throws IOException {
    		  File file=new File("C:	ext.txt");
    		  FileInputStream fis=new FileInputStream(file);
    		  byte []b=new byte[10];
    		  while(fis.read(b)!=-1)
    		  {
    			  System.out.println(new String(b));
    		  }
    	}    
    }
    

      

       

        2)throw

          对于throw而言一般是用在抛出一个异常对象,使用的不是很多。具体的看下面的例子:

           

    package com.yonyou.test;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    /**
     * 测试类
     * @author 小浩
     * @创建日期 2015-3-2
     */
    
    public class Test{
    	public static void main(String[] args) throws MyException{
    		  File file=new File("C:	ext.txt");
    		  FileInputStream fis;
    		 try {
    		  fis = new FileInputStream(file);
    		  byte []b=new byte[10];
    		  while(fis.read(b)!=-1)
    		  {
    			  System.out.println(new String(b));
    		  }
    		} catch (IOException e) {
    			//处理捕获的异常,并抛出一个异常对象
    			throw new MyException("龙不吟,虎不啸");
    		}
    }
    }
    
    
    /**
     * 自定义异常
     * @author 小浩
     * @创建日期 2015-3-2
     */
    class MyException extends Exception{
    
    	private static final long serialVersionUID = 1L;
    	 
    	public MyException(String info){
    		super(info);
    	}
    	
    }
    

     运行的结果为:

        Exception in thread "main" com.yonyou.test.MyException: 龙不吟,虎不啸   //用户自定义的异常对象
        at com.yonyou.test.Test.main(Test.java:27)

        

        好吧今天就先到这里吧~~ See You

  • 相关阅读:
    给Windows组件添加图标
    C#文件和文件夹操作
    WinForm TreeView 右键菜单
    VC++ New 操作符
    Ext与Jquery的整合
    PowerDesign报表操作
    SQLServer自动建表存储过程
    Visual Studio 2008简体中文正式版下载地址
    WinForm遍历控件
    发布时用直接用源文件部署
  • 原文地址:https://www.cnblogs.com/xiohao/p/4308618.html
Copyright © 2011-2022 走看看