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:\text.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:\text.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

 

posted on 2015-03-02 14:01  @ 小浩  阅读(7399)  评论(0编辑  收藏  举报