如何抛出异常

在你可以捕获异常之前,一些代码必须抛出一个异常。任何代码都可能会抛出异常:您的代码,来自其他人编写的包(例如Java平台附带的包)或Java运行时环境的代码。无论是什么引发的异常,它总是通过 throw 语句抛出。

您可能已经注意到,Java平台提供了许多异常类。所有类都是Throwable类的后代,并且都允许程序区分在程序执行期间可能发生的各种类型的异常。

您还可以创建自己的异常类来表示在您编写的类中可能发生的问题。事实上,如果您是包开发人员,您可能必须创建自己的一组异常类,以允许用户区分包中可能发生的错误与Java平台或其他包中发生的错误。

您还可以创建异常链。有关更多信息,请参阅“异常链”部分。

throw语句

所有方法都使用throw语句抛出异常。 throw语句需要一个参数:throwable 对象。 Throwable 对象是Throwable类的任何子类的实例。 这里是一个throw 语句的例子。throwsomeThrowableObject;

让我们来看一下上下文中的throw语句。 以下pop方法取自实现公共堆栈对象的类。 该方法从堆栈中删除顶层元素并返回对象。publicObjectpop(){

Objectobj;

if(size==0){

thrownewEmptyStackException();

}

obj=objectAt(size-1);

setObjectAt(size-1,null);

size--;

returnobj;

}

pop 方法将会检查栈中的元素。如果栈是空的(它的size等于0),则pop实例化一个 EmptyStackException对象(java.util的成员)并抛出它。 本章中的“创建异常类”部分介绍如何创建自己的异常类。 现在,所有你需要记住的是,你可以只抛出继承自java.lang.Throwable类的对象。

注意,pop方法的声明不包含throws子句。 EmptyStackException不是已检查异常,因此不需要pop来声明它可能发生。

Throwable类及其子类

继承自Throwable类的对象包括直接后代(直接从Throwable类继承的对象)和间接后代(从Throwable类的子代或孙代继承的对象)。 下图说明了Throwable类及其最重要的子类的类层次结构。 正如你所看到的,Throwable有两个直接的后代:Error和Exception。

Error 类

当Java虚拟机中发生动态链接故障或其他硬故障时,虚拟机会抛出 Error。简单的程序通常不捕获或抛出Error。

Exception 类

大多数程序抛出和捕获从 Exception 类派生的对象。Exception 表示发生了问题,但它不是严重的系统问题。你编写的大多数程序将抛出并捕获Exception而不是 Error。

Java平台定义了 Exception 类的许多后代。这些后代表示可能发生的各种类型的异常。例如,IllegalAccessException表示找不到特定方法,NegativeArraySizeException表示程序尝试创建一个负大小的数组。

一个 Exception 子类RuntimeException保留用于指示不正确使用API​​的异常。运行时异常的一个示例是NullPointerException,当方法尝试通过空引用访问对象的成员时,会发生此异常。“未检查异常”章节讨论了为什么大多数应用程序不应该抛出运行时异常或RuntimeException的子类。

java如何快速抛出异常,异常 - 如何抛出异常 - 《Java 编程要点(Essential Java)》 - 书栈网 · BookStack...相关推荐

  1. wps在线预览接口_金山文档在线编辑 - 快速接入 - 《WPS开放平台技术文档》 - 书栈网 · BookStack...

    快速接入 一.申请和上线流程如下: 1.申请Appid和SecretKey 需要前往https://open.wps.cn 注册服务商,并且申请开通金山文档在线编辑服务. 2.实现回调接口 根据本文档 ...

  2. java 2d划线 刷子_月光软件站 - 编程文档 - Java - Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO 2D GRAPHICS)...

    Java 2D Graphics提供了强大的画线功能,可以控制线型,线宽,刷子的形状等,但在JDK1.2以前,没有提供这样一个功能,为了保持与旧版JDK的相容,实现一个可控制线型,线宽的画直线方法还是 ...

  3. java写足球游戏_月光软件站 - 编程文档 - Java - 足球战术之flyweight篇

    接上回: 这个是球队的基本建设,为了组建好一支国家队, 而国内有成千上万的优秀队员,而每个人的特性 都不同,要使他们组建成一支11个人的优秀球队, 必须按照442的阵形严格区分每个队员的分工,如 前腰 ...

  4. java.lang.reflect.InvocationTargetException异常

    java.lang.reflect.InvocationTargetException异常 参考文章: (1)java.lang.reflect.InvocationTargetException异常 ...

  5. java maven strom 启动异常

    java maven strom 启动异常 参考文章: (1)java maven strom 启动异常 (2)https://www.cnblogs.com/louxindong/p/6146934 ...

  6. java异常——异常分类+声明已检查异常+如何抛出异常+自定义异常类

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常--异常分类+声明已检查异常+如何抛出异常+自定义异常类 的相关知识: 0.2)异 ...

  7. java学习中,异常和错误的简介、捕获异常、抛出异常、自定义异常、finally关键字(java 学习中的小记录)

    java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常.finally关键字(java 学习中的小记录) 参考文章: (1)java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常. ...

  8. Java中的异常总结详解(异常类型、声明异常、抛出异常、捕获异常)

    Java 异常解析 前言 一.异常概述 二.异常类型 1.系统错误(Error) 2.编译时异常(Exception) 3.运行时异常(RuntimeException) 三.处理编译时异常的更多知识 ...

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

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

最新文章

  1. 学习笔记之三(数组中的一些方法)
  2. Python 文件操作二
  3. 团队-石头剪刀布-模块测试过程
  4. 互联网思维-NO.1思维(2)
  5. .net平台下C#socket通信(中)
  6. spring启动加载流程
  7. vc6.0垃圾文件清理工具_干货 | 电脑清理宝典
  8. POJ 2115 C Looooops(扩展欧几里得)
  9. 何登成 MYSQL 博客
  10. android布局错,Android Studio布局错误
  11. Mac Xdebug安装时遇到了Zend Engine API 不一致的问题
  12. .NET 5(C#) 将控制台程序(Console Application)发布成单个exe文件
  13. excel学习-自定义图表颜色(QQ截图+colorpix取色器)
  14. Telos 首份年报(中译版-下)
  15. CE扫雷20211031
  16. 大数据查询工具HBase读写设计与实践
  17. Intel和AMD处理器各有什么特点?该如何选择?
  18. Samba误删除文件恢复(开启回收站)
  19. html字体下划线下移,CSS下划线与文字间距距离设置(CSS文字下划线距离设置)
  20. 【转】2023年Java学习路线图-黑马程序员

热门文章

  1. python抓取网页图片
  2. 关于XP下OpenGL的配置
  3. python信号处理教程_PhysioNet生理信号处理(五)--WFDB for Python(DEMO)
  4. knn算法python代码_在python中使用KNN算法处理缺失的数据
  5. windows登录linux免密码,Windows使用SSH Secure Shell实现免密码登录Linux的方法以及使用scp2命令免密码下载文件...
  6. androidsdcard挂载目录_Android获取手机自带SDCard和外置SDCard路径
  7. cookie可存的最大限制_一文梳理Web存储,从cookie,WebStorage到IndexedDB
  8. 小米无线网卡驱动_小米air笔记本蓝屏故障排除,一个匪夷所思的故障原因。
  9. android html 换行_Android-富文本处理-html字符串去掉内部样式,统一添加body、style,统一支持换行等...
  10. react改变checkbox的文字类型_reactjs – React复选框事件和处理程序的Typescript类型?...