如果一个方法可以导致一个异常但不处理它,它必须指定这种行为以使方法的调用者可以保护它们自己而不发生异常。做到这点你可以在方法声明中包含一个throws子句。一个 throws 子句列举了一个方法可能抛出的所有异常类型。这对于除Error或RuntimeException及它们子类以外类型的所有异常是必要的。一个方法可以抛出的所有其他类型的异常必须在throws子句中声明。如果不这样做,将会导致编译错误。

下面是包含一个throws子句的方法声明的通用形式:

1 type method-name(parameter-list) throws exception-list{
2     // body of method
3 }

这里,exception-list是该方法可以抛出的以有逗号分割的异常列表。

下面是一个不正确的例子。该例试图抛出一个它不能捕获的异常。因为程序没有指定一个throws子句来声明这一事实,程序将不会编译。

 1 // This program contains an error and will not compile.
 2 class ThrowsDemo {
 3     static void throwOne() {
 4         System.out.println("Inside throwOne.");
 5         throw new IllegalAccessException("demo");
 6     }
 7     public static void main(String args[]) {
 8         throwOne();
 9     }
10 }

为编译该程序,需要改变两个地方。第一,需要声明throwOne( )引发IllegalAccess Exception异常。第二,main( )必须定义一个try/catch 语句来捕获该异常。正确的例子如下:

 1 // This is now correct.
 2 class ThrowsDemo {
 3     static void throwOne() throws IllegalAccessException {
 4       System.out.println("Inside throwOne.");
 5       throw new IllegalAccessException("demo");
 6    }
 7    public static void main(String args[]) {
 8       try {
 9          throwOne();
10       } catch (IllegalAccessException e) {
11          System.out.println("Caught " + e);
12       }
13    }
14 }

下面是例题的输出结果:

1 inside throwOne
2 caught java.lang.IllegalAccessException: demo

系列文章:

Java知多少(上)

Java知多少(中)

Java知多少(50)Java throws子句相关推荐

  1. Java中throw re_详解Java编程中throw和throws子句的使用方法

    java throw:异常的抛出程序可以用throw语句抛出明确的异常.throw语句的通常形式如下: throw throwableinstance; 这里,throwableinstance一定是 ...

  2. Java throws子句

    如果一个方法可以导致一个异常但不处理它,它必须指定这种行为以使方法的调用者可以保护它们自己而不发生异常.做到这点你可以在方法声明中包含一个throws子句.一个 throws 子句列举了一个方法可能抛 ...

  3. Java知多少(中)

    Java知多少(上) Java知多少(39)interface接口 Java知多少(40)接口和抽象类的区别 Java知多少(41)泛型详解 Java知多少(42)泛型通配符和类型参数的范围 Java ...

  4. Java基础面试50题

    1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象 ...

  5. Java知多少(43)异常处理基础

    Java异常是一个描述在代码段中发生的异常(也就是出错)情况的对象.当异常情况发生,一个代表该异常的对象被创建并且在导致该错误的方法中被抛出(throw).该方法可以选择自己处理异常或传递该异常.两种 ...

  6. Java语法基础50题训练(上)

    题目1: 有两只老虎,一只体重为180kg,一只体重为200kg,请用程序实现判断两只老虎的体重是否相同. 代码如下: public class OperatorTest {public static ...

  7. Java中的50个关键字

    2019独角兽企业重金招聘Python工程师标准>>> Java中的50个关键字 关键字也称为保留字,是指java语言中规定了特定含义的标示符.对于保留字,用户只能按照系统规定的方式 ...

  8. JAVA经典算法50题(转)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1]   题目:古典问题:有一对兔子, ...

  9. 零基础写Java知乎爬虫之进阶篇

    转载自 零基础写Java知乎爬虫之进阶篇 前面几篇文章,我们都是简单的实现了java爬虫抓取内容的问题,那么如果遇到复杂情况,我们还能继续那么做吗?答案当然是否定的,之前的仅仅是入门篇,都是些基础知识 ...

最新文章

  1. 原来AGILE就是这么一回事啊!
  2. Python决策树可视化Graphviz下载地址
  3. 强化学习:Policy-based方法Part2
  4. centos7 配置静态ip时出现双ip问题解决
  5. Android之Android Studio--Gradle多渠道打包
  6. mybatis级联查询list_MyBatis手把手跟我做系列(四) ---级联查询与懒加载
  7. python判断linux中文件是否存在_linux shell 中判断文件、目录是否存在的方法
  8. mysql 查询优化 ~ 分区表查询的探索
  9. This version of ChromeDriver only supports Chrome version 93 Current browser version is 95.0.4638.54
  10. CRM客户关系管理系统的设计与实现
  11. bitwise和shift arithmetic
  12. 玩转Qml(12)-再谈动态国际化
  13. 快速理清Paxos、Zab、Raft协议
  14. 怎么把qlv格式转换成mp4?快速转换qlv格式的方法
  15. 常用一些缺失dll文件下载网址,最新版本的 Microsoft Visual C++ 的下载链接
  16. SDK完整环境下载安装及ADB常用命令
  17. Perspectives
  18. 网络管理人员应该掌握的技术
  19. c++在文件中提取数字或字母
  20. 大师兄科研网_哈哈,这才是研究生的科研日常是真的惨!但看完研究生学历到底值多少钱?我酸了~...

热门文章

  1. ActiveMQ Topic发布订阅消息
  2. Cacti设置流量阀值实现邮件报警
  3. 迷宫问题,手动模拟栈
  4. 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
  5. Mesos container在360广告系统的应用
  6. 云计算三重奏:SAAS、PAAS和IAAS
  7. MongoDB中文社区年终盛典
  8. linux运算_linux中的计算【转】
  9. 在eclipse安卓sqlite怎么用_把安卓手机性能发挥到极致之-Aid Learning
  10. jinfo-jvm参数信息工具