zoukankan      html  css  js  c++  java
  • Java知多少(49)throw:异常的抛出

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

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

    下面是一个创建并抛出异常的例子程序,与异常匹配的处理程序再把它抛出给外层的处理程序。
     1 // Demonstrate throw.
     2 class ThrowDemo {
     3     static void demoproc() {
     4       try {
     5          throw new NullPointerException("demo");
     6       } catch(NullPointerException e) {
     7          System.out.println("Caught inside demoproc.");
     8          throw e; // rethrow the exception
     9       }
    10    }
    11 
    12    public static void main(String args[]) {
    13       try {
    14          demoproc();
    15       } catch(NullPointerException e) {
    16          System.out.println("Recaught: " + e);
    17       }
    18    }
    19 }

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

    1 Caught inside demoproc.
    2 Recaught: java.lang.NullPointerException: demo

    该程序还阐述了怎样创建Java的标准异常对象,特别注意下面这一行:

    1    throw new NullPointerException("demo");

    这里,new用来构造一个NullPointerException实例。所有的Java内置的运行时异常有两个构造函数:一个没有参数,一个带有一个字符串参数。当用到第二种形式时,参数指定描述异常的字符串。如果对象用作 print( )或println( )的参数时,该字符串被显示。这同样可以通过调用getMessage( )来实现,getMessage( )是由Throwable定义的。

  • 相关阅读:
    LG P4449 & JZOJ 于神之怒
    [国家集训队]Crash的数字表格
    LG P3768 简单的数学题
    NOI2018 屠龙勇士
    为什么从后台获取的id到前端后却变了?Long类型转json时前端js丢失精度解决方案-----@JsonSerialize和@JsonDeserialize
    vue的filters过滤器优化
    根据key查询redis中是否存在key对应的value,根据key获取值
    PowerDesigner逆向工程将MYSQL数据库转成pdm
    解决图片验证码不显示的问题
    报错:Unknown column 'province' in 'field list'
  • 原文地址:https://www.cnblogs.com/Coda/p/4470550.html
Copyright © 2011-2022 走看看