到目前为止,你只是获取了被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

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

七. 多线程编程
1.线程的概念
2.Java线程模型
3.主线程
4.创建线程
5.创建多线程
6.isAlive()和join()的使用
7.线程优先级
8.线程同步
9.线程间通信
10.线程死锁
11.线程的挂起、恢复和终止

Java throw:异常的抛出相关推荐

  1. java声明异常必须抛出吗_简述java中抛出异常的两种方式

    java编程中经常遇到异常,这时就需要利用java中的异常抛出机制,在java中提供了两种抛出异常的方法:try{}  catch() {}和throw. 一.抛出异常的两种方式 (1) 首先我们来看 ...

  2. 六. 异常处理7.throw:异常的抛出

    到目前为止,你只是获取了被Java运行时系统抛出的异常.然而,程序可以用throw语句抛出明确的异常.Throw语句的通常形式如下:     throw ThrowableInstance; 这里,T ...

  3. java 是否继续_Java异常被抛出或被捕获之后,代码是否继续执行的问题

    在写程序的时候,我们经常被教导,要对异常的信息进行处理,哪里该抛出异常.但是,更多的时候,我们只是模仿异常的抛出,却不知道为什么要这样抛异常(被catch了?被向上抛了?后面的代码是否执行了?). 接 ...

  4. java 在方法中抛出异常_Java异常的抛出

    在Java中,当定义的方法可能产生异常时,程序员必须抛出可能的异常. 抛出异常的两种方式,一是在方法内部用throw语句,二是在方法定义时用throws关键字 1.throw语句 在Java中,thr ...

  5. java自定义异常及异常的抛出

    java自定义异常及异常的抛出 参考文章: (1)java自定义异常及异常的抛出 (2)https://www.cnblogs.com/gemiaomiao/p/11900564.html 备忘一下.

  6. java中子类可否抛出两个父类抛出的异常的子类_父类的多个构造方法各自抛出不同的异常,子类的构造方法应该抛出哪个/些异常?...

    [情况描述]如下代码,在父类中定义了两个构造方法,各自throws不同的异常.当定义子类时,IDE会提示需要显示定义构造方法来抛出父类构造方法的异常.很自然地认为应该抛出父类所有构造方法的异常,然而只 ...

  7. Java对异常处理或抛出之后,后面代码会不会再执行?

    一.测试代码: public class TestException {public static void main(String[] args) throws Exception {int[] i ...

  8. 将不确定变为确定~异常被抛出的顺序

    回到目录 在程序中,为了保正代码的严禁性我们会在需要的地方加个try...cache块,作用是对一个已知或者未知的异常进行捕获,这是正常的,任何一种面向对象的语言都提供了这个基础的功能,C#也不例外, ...

  9. SpringMvc的 @Valid 拦截到的异常如何抛出

    SpringMvc的 @Valid 拦截到的异常如何抛出 参考文章: (1)SpringMvc的 @Valid 拦截到的异常如何抛出 (2)https://www.cnblogs.com/acm-bi ...

最新文章

  1. Android学习——R文件丢失异常原因汇总
  2. MySQL Group Replication调研剖析
  3. 爱立信:用什么保持全球老大的地位?
  4. java 管道流PipedInputStream,PipedInputStream和随机访问文件 RandomAccessFile
  5. 初识ABP vNext(12):模块的独立运行与托管
  6. 怎么锁定计算机密码忘了怎么办,如果忘记了手机数字锁的密码(仅需10秒钟即可解锁),该怎么办...
  7. Android软键盘弹出引起的各种不适终极解决方案
  8. PerlIde in NetBeans7.3 for Debian
  9. NTFS for Mac支持Mac拷贝文件到硬盘
  10. Spring mvc时间格式处理
  11. mysql中修改表字段的类型长度_mysql中修改表字段名/字段长度/字段类型详解
  12. 通信电子线路高如云pdf_通信电子线路 第三版 教学课件 高如云 封面及目录.pdf...
  13. 《麦肯锡精英的谈判策略》 -豆瓣评分8.2
  14. 如何用ChatGPT做新品上市推广方案策划?
  15. PHP include 和 include_once 的区别
  16. 哪些APP需要做ASO优化?
  17. 经典神经网络分类器之BP算法和自组织竞争网络
  18. 现在做网站依然可以赚钱
  19. 软件工程的先驱 女软件工程师Margaret Hamilton
  20. 【保研记录贴】西工大计算机面试

热门文章

  1. 对于机器学习中,数据增强
  2. angular学习笔记(十九)-自定义指令修改dom
  3. 0-1背包问题优化算法详解
  4. 由 Session 和 Cookie 的区别说起
  5. [转载]通过Arcgis Server向MXD中添加图层
  6. 程序基础:数据结构(郝斌讲解)(一)
  7. 正则化与L0、L1、L2范数祥解
  8. Centos6.5进入救援模式的方法
  9. 关键字explicit与构造函数
  10. 系列笔记 | 深度学习连载(5):优化技巧(下)