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

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的区别和联系的更多相关文章

  1. java中throw和throws的区别

    throw和throws的区别: throws 用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开 表示抛出异常,由该方法的调用者来处理 throws表示出现异常的一种可能性,并不一定会 ...

  2. Java中的throw和throws的区别

    Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...

  3. JAVA之旅(十)——异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别

    JAVA之旅(十)--异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别 不知不觉,JAVA之旅这个系列已经更新到第十篇了,感觉如梦如幻,时间 ...

  4. java基础之自定义异常类及throw和throws的区别

    一.异常的架构: Throwable类:所以异常类都是Throwable的子类,它派生两个子类 Error和Exception. Error类:表示仅靠程序本身无法恢复的的严重错误,比如内存溢出,虚拟 ...

  5. Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别

    如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型. 从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是 ...

  6. 异常机制及throw与throws的区别(转)

    异常机制及throw与throws的区别 分类: Java2008-11-14 16:08 9672人阅读 评论(5) 收藏 举报 exceptionstringjavafunclass编译器 Jav ...

  7. Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)

    Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)

  8. java异常和throw和throws的区别

    之前在编程中编译完成后,运行时,会遇见一些常见的错误,如NullPointerException,ArrayIndexOutOfBoundsException等等 在今天重新回顾学习了java异常,总 ...

  9. Java中异常分类和Throw和Throws的区别

    Java中异常分类和Throw和Throws的区别 1.异常分类 Throwable是Java中所有错误和异常的超类.它的下一级是Error和Exception 1.1 Error(错误) Error ...

随机推荐

  1. Qt QThread 线程创建,线程同步,线程通信 实例

    1.  继承QThread, 实现run()方法, 即可创建线程. 2. 实例1 代码 myThread.h #ifndef MYTHREAD_H #define MYTHREAD_H #includ ...

  2. Functions should do one thing一个函数应该只做一件事

    if you take nothing else away from this guide other than this, you'll be ahead of many developers. 如 ...

  3. Java日期时间输出格式优化

    使用printf格式化日期 printf 方法可以很轻松地格式化时间和日期.使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾. 转  换  符 说    明 示    例 c 包括全部 ...

  4. matplotlib柱状图

    import numpy as np import matplotlib.pyplot as plt size = 5 a = np.random.random(size) b = np.random ...

  5. 判断A字符串是B字符串的反转

    先将其中一个字符串进行反转操作,然后两个字符串进行判断. 1.反转 /** * 字符串反转 * @param str * @return */ private static String conver ...

  6. liunx常用命令-----查找命令

    locate 根据文件名查找文件 根据数据库记录搜索,当天创建的搜不到 whereis which  搜索命令的命令   如 whereis ls find   /root   -name       ...

  7. 委托+内置委托方法+多播委托+lambda表达式+事件

    委托概念:如果我们要把方法当做参数来传递的话,就要用到委托.简单来说委托是一个类型,这个类型可以赋值一个方法的引用. 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字 ...

  8. LeetCode OJ:Unique Paths(唯一路径)

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  9. Spring Boot同时开启HTTP和HTTPS服务

    由于Spring Boot中通过编码开启HTTPS服务比较复杂,所以官方推荐通过编码开启HTTP服务,而通过配置开启HTTPS服务. Spring Boot的application.yml中添加如下配 ...

  10. 安装Windows系统指南

    安装系统指南 WIN10PE内核与WIN8PE内核区别: Win10PE内核支持NVME(M.2)新硬盘,WIN8PE不支持NVME. 但是WIN8PE对老机器的适配更好一些,其他功能均一致. 多一个 ...