异常是在运行时代码序列中产生一种异常情况。换句话说,异常是一个运行时错误。在不支持异常处理的计算机语言中,错误必须被手工的检查和处理——典型的是通过错误代码的运用等等。这种方法既很笨拙也很麻烦。

Java的异常处理避免了这些问题,而且在处理过程中,把运行时错误的管理带到了面向对象的世界。

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

两种情况下,该异常被捕获(caught)并处理。异常可能是由Java运行时系统产生,或者是由你的手工代码产生。被Java引发的异常与违反语言规范或超出Java执行环境限制的基本错误有关。手工编码产生的异常基本上用于报告方法调用程序的出错状况。

Java异常处理通过5个关键字控制:try、catch、throw、throws和 finally。下面讲述它们如何工作的。程序声明了你想要的异常监控包含在一个try块中。如果在try块中发生异常,它被抛出。你的代码可以捕捉这个异常(用catch)并且用某种合理的方法处理该异常。系统产生的异常被Java运行时系统自动引发。

手动引发一个异常,用关键字throw。任何被引发方法的异常都必须通过throws子句定义。任何在方法返回前绝对被执行的代码被放置在finally块中。

下面是一个异常处理块的通常形式:

try { // block of code to monitor for errors
}
catch (ExceptionType1 exOb) { // exception handler for ExceptionType1 }
catch (ExceptionType2 exOb) { // exception handler for ExceptionType2 } // ... finally { // block of code to be executed before try block ends }

这里,ExceptionType 是发生异常的类型。

所有异常类型都是内置类Throwable的子类。因此,Throwable在异常类层次结构的顶层。紧接着Throwable下面的是两个把异常分成两个不同分支的子类。一个分支是Exception。

该类用于用户程序可能捕捉的异常情况。它也是你可以用来创建你自己用户异常类型子类的类。在Exception分支中有一个重要子类RuntimeException。该类型的异常自动为你所编写的程序定义并且包括被零除和非法数组索引这样的错误。

另一类分支由Error作为顶层,Error定义了在通常环境下不希望被程序捕获的异常。

Error类型的异常用于Java运行时系统来显示与运行时系统本身有关的错误。堆栈溢出是这种错误的一例。本章将不讨论关于Error类型的异常处理,因为它们通常是灾难性的致命错误,不是你的程序可以控制的。

Java基础篇:什么是异常,异常处理的基础是什么?相关推荐

  1. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)

    菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...

  2. java提高篇(十六)-----异常(一)

    Java的基本理念是"结构不佳的代码不能运行"!!!!! 大成若缺,其用不弊. 大盈若冲,其用不穷. 在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考 ...

  3. 《我的视频我做主:Premiere Pro CS5实战精粹》——第一部分 基础篇 第1章 非线性剪辑基础 1.1 认识非线性剪辑...

    本节书摘来自异步社区<我的视频我做主:Premiere Pro CS5实战精粹>一书中的第1章,第1.1节,作者 拍客三人行,姜岩,赵小虎,周权虎,更多章节内容可以访问云栖社区" ...

  4. 【java学习之路】(java SE篇)006.异常

    异常 异常的概念 异常: 在程序运行过程中出现的不正常的情况 ​ 注意: ​ 1.相同的代码在运行的时候,根据输入参数或者操作的不同,有可能会发生异常,有可能不会 ​ ----应该在写代码的过程中尽可 ...

  5. Python 基础篇-简单的异常捕获

    try 后面就是要捕获的异常代码,当它出现异常时,我们就能捕获到它. 当出现异常时就会走 except 这个分支. # 如果出现异常,打印异常e try:... except Exception as ...

  6. 并发编程基础篇——第一章(并发相关基础概念理解)

    其实讲到并发编程,有时候会问自己为什么要去做这些知识的积累和沉淀,可能我们做业务的在职业生涯里,并不会经常使用到这些所谓的多线程编程,顶多可能开一个线程,去执行个任务,又或者通过定时器触发某个业务,实 ...

  7. SQL Server 2012入门T-SQL基础篇:(2)SQL的两个基础概念

    这里介绍两个SQL的两个基本的概念,以方便后期的学习: (1)SQL全称structured query language,中文为结构化查询语言;它可以在各类数据库上使用,例如,mysql,oracl ...

  8. 【MQTT基础篇(二)】MQTT基础

    文章目录 MQTT基础 1 MQTT服务端 2 MQTT客户端 3 MQTT主题 4 MQTT 发布/订阅 特性 MQTT基础 在MQTT协议通讯中,有两个最为重要的角色.它们分别是服务端和客户端. ...

  9. Linux基础篇——Linux磁盘操作(磁盘基础知识、分类、分区、挂载、卸载、扩容)详解

    目 录 1. 概 念 2. 为啥要分区 3. 磁盘的结构 4. 磁盘的分类 4.1 IDE硬盘 4.2 SCSI硬盘 4.3 SATA硬盘 4.4 固态硬盘 5. 磁盘分区命名规则 6. 磁盘分区类型 ...

  10. Spark修炼之道(基础篇)——Linux大数据开发基础:第二节:Linux文件系统、文件夹(一)...

    本节主要内容 怎样获取帮助文档 Linux文件系统简单介绍 文件夹操作 訪问权限 1. 怎样获取帮助文档 在实际工作过程其中,常常会忘记命令的使用方式.比如ls命令后面能够跟哪些參数,此时能够使用ma ...

最新文章

  1. php帝国程序跨表调用数组,帝国CMS 跨表调用相关信息标签
  2. erlang精要(4)-等于与不等于
  3. Android 通过腾讯WebService API获取 地址经纬度
  4. Edge on Linux?微软:会有的,但不是现在
  5. C语言n个坐标点间的最大距离,SOS!求检查程序,到17个点距离之和最小的点的坐标...
  6. 转:VS2005 快捷键
  7. 客户端压测server端计算qps以及不同延迟时间下响应数量所占百分比
  8. 安装SQL 2016的时候 Microsoft R Open 和 Microsoft R Server 安装文件的位置
  9. java学生签到系统_学生签到系统.pdf
  10. 链路聚合的介绍以及配置
  11. 2022.10月面具输入LSPosed框架以及隐藏root
  12. 产品需求分析流程图怎么做?软件我都帮你找了
  13. SweepProfile for 3dMax石膏线生成插件使用教程
  14. Masked Autoencoders Are Scalable Vision Learners (MAE)
  15. 涉密计算机病毒库升级管理,涉密计算机管理制度.doc
  16. 24_摘录的一些精彩语句1
  17. 处理win10系统自动休眠bug
  18. Android 酒店客房管理简单小程序
  19. 配置 OpenStack 命令 自动 补全
  20. windows下mysql8初始化

热门文章

  1. Python实训第一天--基础知识
  2. Oracle入门第二天(下)——单行函数
  3. delphi 7 mdi子窗体。。。无法更改以命令对象为源的记录集对象的 ActiveConnection 属性。...
  4. 通过一个月时间字段分组
  5. 取出被正则表达式匹配的值
  6. 【个人网站搭建教程】阿里云服务器+宝塔+wordpress
  7. python 逆序_python编程题-句子的逆序
  8. delphi制作上下开幕效果_显示产业国际盛会开幕,广州新型显示产值将突破2500亿...
  9. cmp linux 命令,比较文件Linux基本命令:cmp
  10. html5 api dom 文档,javascript dom操作API