资讯专栏INFORMATION COLUMN

java学习(八) —— 异常及异常处理

jas0n / 2352人阅读

摘要:异常发生时如何处理,提供了解决办法异常处理机制。只要在程序中产生了异常,就会用一个对应类型的异常对象来封装异常,会试图寻找异常处理程序来处理异常。中,异常处理的任务就是将执行控制流从异常发生的地方转移到能够处理这种异常的地方去。

前言

概述:异常就是java程序在运行过程中出现的错误。

异常发生时如何处理,java提供了解决办法:异常处理机制。

java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw语句手动抛出。

只要在java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE会试图寻找异常处理程序来处理异常。

JDK中内建类一些常见的异常类,我们也可以自定义异常。

Throwable类是java异常类型的顶层父类,一个对象只有是Throwable类的直接或间接实例,他才是一个异常对象,才能被异常处理机制识别。

异常分类

检查性异常:

(1)最具代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预测的。
(2)例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单的忽略。

运行时异常:

(1)运行时异常是可能被程序员避免的异常。
(2)与检查性异常相反,运行时异常可以在编译时被忽略。

错误:

(1)错误不是异常,而是脱离程序员控制的问题。
(2)错误在代码中通常被忽略。
(3)例如,当栈溢出时,一个错误就发生了,它们在编译时也是检查不到的。

异常分类图解:

Error和Exception类

java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。

Throwable又派生出Error类和Exception类。

Error类:

(1)Error类以及他的子类的实例,代表了JVM本身的错误。
(2)错误不能被程序员通过代码处理,Error很少出现。
(3)因此,程序员应该关注Exception为父类的分支下的各种异常类

Exception类:

(1)Exception及他的子类,代表程序运行时发送的各种不期望发生的事件。
(2)可以被java异常处理机制使用,是异常处理的核心。

异常处理

异常处理机制能让程序在发生异常时,按照代码预先设定的异常处理逻辑,针对性的处理异常,让程序尽最大可能的恢复正常并继续执行,且保持代码的清晰。

java中,异常处理的任务就是将执行控制流从异常发生的地方转移到能够处理这种异常的地方去。

在编写代码处理异常时,对于检查异常,有两种处理方式:

(1)使用try...catch...finally语句块处理
(2)在函数签名中使用throws声明交给函数调用者caller去解决

try...catch...finally语句块:

(1)try块中放可能发生异常的代码;
(2)如果执行完try并且不发生异常,则接着去执行finally块代码以及finally之后的代码;
(3)如果执行try中代码发生异常,就会尝试匹配catch块;
(4)每一个catch块用于处理一个异常;
(5)异常匹配是按照catch块的顺序从上往下寻找的,只有第一个会匹配到的catch块会被执行。
(6)try块中的局部变量和catch块中的局部变量,以及finally中的局部变量,它们之间不可以共享使用;
(7)finally块不管异常是否发生,只要对应的try块执行了,它一定会执行。
(8)finally块通常用来做资源释放操作,关闭文件或者关闭数据库等操作。

throws/throw:

(1)如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。
(2)throws 关键字放在方法签名的尾部。
(3)throws仅仅是将函数中可能出现的异常向调用者声明,而自己并不处理异常。
(4)采用这种异常处理的原因可能是:方法本身不知道如何处理这种异常,或者说让调用者处理更好,调用者需要为可能发生的异常负责。
(5)也可以使用 throw 关键字手动抛出一个异常,无论它是新实例化的还是刚捕获到的。
(6)throw语句的后面必须是一个异常对象。

参考链接

http://www.importnew.com/2661...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77114.html

相关文章

  • 你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看)

    摘要:导读阅读本文需要有足够的时间,笔者会由浅到深带你一步一步了解一个资深架构师所要掌握的各类知识点,你也可以按照文章中所列的知识体系对比自身,对自己进行查漏补缺,觉得本文对你有帮助的话,可以点赞关注一下。目录一基础篇二进阶篇三高级篇四架构篇五扩 导读:阅读本文需要有足够的时间,笔者会由浅到深带你一步一步了解一个资深架构师所要掌握的各类知识点,你也可以按照文章中所列的知识体系对比自身,对自己...

    huaixiaoz 评论0 收藏0
  • 自己整理的java编程规范

    摘要:努力避免硬编码。一个类的总体行数尽量控制在行左右不超过一千行。函数注释函数注释采用,在每个函数或者过程的前面要有必要的注释信息,包括函数或过程名称功能描述输入输出及返回值说明调用关系及被调用关系说明等。 前言 推荐Google的Java编码规范英文版: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然...

    yedf 评论0 收藏0
  • java异常那些事

    摘要:一抛出异常发现错误异常也是对象使用使用异常机制来报告错误。异常也是普通的类类型。异常声明中的语句执行完成后会继续执行后的其他语句。非检查异常抛出到上一级时可以不用进行声明合理的使用非检查异常可以简化代码。 为什么需要异常机制: Java的基本理念是结构不佳的代码不能运行 --- Java编程思想 最理想的是在编译时期就发现错误,但一些错误要在运行时才会暴露出来。对于这些错误我们当然不能...

    Kyxy 评论0 收藏0
  • 零基础如何学爬虫技术

    摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...

    KunMinX 评论0 收藏0
  • ApacheCN 人工智能知识树 v1.0

    摘要:贡献者飞龙版本最近总是有人问我,把这些资料看完一遍要用多长时间,如果你一本书一本书看的话,的确要用很长时间。为了方便大家,我就把每本书的章节拆开,再按照知识点合并,手动整理了这个知识树。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 贡献者:飞龙版...

    刘厚水 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<