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
throw和throws的区别和联系的更多相关文章
- java中throw和throws的区别
throw和throws的区别: throws 用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开 表示抛出异常,由该方法的调用者来处理 throws表示出现异常的一种可能性,并不一定会 ...
- Java中的throw和throws的区别
Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...
- JAVA之旅(十)——异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别
JAVA之旅(十)--异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别 不知不觉,JAVA之旅这个系列已经更新到第十篇了,感觉如梦如幻,时间 ...
- java基础之自定义异常类及throw和throws的区别
一.异常的架构: Throwable类:所以异常类都是Throwable的子类,它派生两个子类 Error和Exception. Error类:表示仅靠程序本身无法恢复的的严重错误,比如内存溢出,虚拟 ...
- Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别
如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型. 从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是 ...
- 异常机制及throw与throws的区别(转)
异常机制及throw与throws的区别 分类: Java2008-11-14 16:08 9672人阅读 评论(5) 收藏 举报 exceptionstringjavafunclass编译器 Jav ...
- Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)
Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)
- java异常和throw和throws的区别
之前在编程中编译完成后,运行时,会遇见一些常见的错误,如NullPointerException,ArrayIndexOutOfBoundsException等等 在今天重新回顾学习了java异常,总 ...
- Java中异常分类和Throw和Throws的区别
Java中异常分类和Throw和Throws的区别 1.异常分类 Throwable是Java中所有错误和异常的超类.它的下一级是Error和Exception 1.1 Error(错误) Error ...
随机推荐
- 【转载】poj 1276 Cash Machine 【凑钱数的问题】【枚举思路 或者 多重背包解决】
转载地址:http://m.blog.csdn.net/blog/u010489766/9229011 题目链接:http://poj.org/problem?id=1276 题意:机器里面共有n种面 ...
- 实现利用公钥私钥免密码登录Linux服务器
原理 客户端生成公钥私钥,把公钥拷贝给linux服务器,用自己的私钥连接服务器.实现如下: 如果是两台Linux服用器A和B,A来实现免密码登录B A执行ssh-keygen -t rsa 就会在/r ...
- Elasticsearch6.0简介入门介绍
Elasticsearch简单介绍 Elasticsearch (ES)是一个基于Lucene构建的开源.分布式.RESTful 接口全文搜索引擎.Elasticsearch 还是一个分布式文档数据库 ...
- spark总结4 算子问题总结
官网上最清晰 sc 启动spark时候就已经初始化好了 sc.textFile后 会产生一个rdd spark 的算子分为两类 一类 Transformation 转换 一类 Action 动作 ...
- CentOS 7 安装 docker-compose
compose是用来在docker中定义和运行复杂应用的小工具,比如在一个文件中定义多个容器,只用一行命令就可以让一切就绪并运行. 安装pip: 这里显示,找不到相应的包?? 说没有python-pi ...
- json数据的拼接与解析
json数据格式 [{ "firstName": "Brett", "lastName":"McLaughlin", & ...
- mac 下面配置gradle
最近刚开始用gradle,先向大家介绍一下怎么配置gradle的环境变量吧: 1.下载最新安装包gradle-xxx-all.zip:http://www.gradle.org,并解压到/Users/ ...
- BZOJ3671/UOJ6 [Noi2014]随机数生成器
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- iOS审核拒绝苹果官方原因详解
1.1不当内容应用程序不应该包括攻击性,敏感,令人不悦,侮辱或者品味低下的内容.例如: 1.1.1 诽谤或者人格侮辱的内容,包括引用或者评论宗教.种族.性取向.性别或者其他目标群体的内容,特别是该应用 ...
- SqlCacheDependency轮询数据库表的更改情况的频率
下面的示例向 ASP.NET 应用程序添加一个 SqlCacheDependency. <sqlCacheDependency enabled="true" pollTi ...