到目前为止,你只是获取了被Java运行时系统抛出的异常。然而,程序可以用throw语句抛出明确的异常。Throw语句的通常形式如下:
    throw ThrowableInstance;
这里,ThrowableInstance一定是Throwable类类型或Throwable子类类型的一个对象。简单类型,例如int或char,以及非Throwable类,例如String或Object,不能用作异常。有两种可以获得Throwable对象的方法:在catch子句中使用参数或者用new操作符创建。

程序执行在throw语句之后立即停止;后面的任何语句不被执行。最紧紧包围的try块用来检查它是否含有一个与异常类型匹配的catch语句。如果发现了匹配的块,控制转向该语句;如果没有发现,次包围的try块来检查,以此类推。如果没有发现匹配的catch块,默认异常处理程序中断程序的执行并且打印堆栈轨迹。

下面是一个创建并抛出异常的例子程序,与异常匹配的处理程序再把它抛出给外层的处理程序。
// Demonstrate throw.
class ThrowDemo {
    static void demoproc() {
      try {
         throw new NullPointerException("demo");
      } catch(NullPointerException e) {
         System.out.println("Caught inside demoproc.");
         throw e; // rethrow the exception
      }
   }

public static void main(String args[]) {
      try {
         demoproc();
      } catch(NullPointerException e) {
         System.out.println("Recaught: " + e);
      }
   }
}

该程序有两个机会处理相同的错误。首先,main()设立了一个异常关系然后调用demoproc( )。 demoproc( )方法然后设立了另一个异常处理关系并且立即抛出一个新的NullPointerException实例,NullPointerException在下一行被捕获。异常于是被再次抛出。下面是输出结果:
Caught inside demoproc.
Recaught: java.lang.NullPointerException: demo http://www.xyseo.net/

该程序还阐述了怎样创建Java的标准异常对象,特别注意下面这一行:
   throw new NullPointerException("demo");
这里,new用来构造一个NullPointerException实例。所有的Java内置的运行时异常有两个构造函数:一个没有参数,一个带有一个字符串参数。当用到第二种形式时,参数指定描述异常的字符串。如果对象用作 print( )或println( )的参数时,该字符串被显示。这同样可以通过调用getMessage( )来实现,getMessage( )是由Throwable定义的。

最新文章

  1. Unity -- EventSystem完全掌握
  2. MVC中的时间js格式化
  3. Android笔记:实现点击事件
  4. Linux中编译、安装nginx
  5. Intent传输包含对象的List集合
  6. 转载 radio值获取
  7. 躲避球游戏ios源码
  8. XMPP即时通讯(代码实现)
  9. 执行此安装程序之前,必须安装 32 位 Windows 映像处理组件(WIC)解决的方法
  10. MFC利用ADO建立access数据源 ---包括访问带access密码与不带access密码两种方式)
  11. --@angularJS--浅谈class与Ng-Class的应用
  12. Django REST framework使用ViewSets的自定义路由实现过程
  13. JavaWeb学习笔记——jquery中的dom操作
  14. J2EE十三个规范小结
  15. HDU Today(最短路)
  16. mysql基础学习
  17. 在ASP.NET Core 2.2 中创建 Web API并结合Swagger
  18. 理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)
  19. 【leetcode】455. Assign Cookies
  20. javascript打印1-100内的质数

热门文章

  1. 孤荷凌寒自学python第三十二天python的代码块中的异常的捕获
  2. 六、OCP 开闭原则
  3. B - Help Jimmy
  4. 思梦PHP-阿里大鱼手机验证码
  5. CocoaPods 安装与使用
  6. [GDOI2016] 疯狂动物园 [树链剖分+可持久化线段树]
  7. Spring Boot Executable jar/war 原理
  8. Postfix+Sasl+Courier-authlib+Dovecot+MySQL+extmail 邮件系统部署
  9. linux下有的目录有可执行权限
  10. 搭建自己的YUM源HTTP服务器