精彩牛耳,用心缔造

Java开发必备技能之异常处理机制

作者: 编辑: 来源: 发布日期: 2019.04.09
信息摘要:
我们在从事java开发过程中,或多或少都会遇到一些我们程序员不被期望的事件,它会影响整个程序的整体运行,针对此类情况,Java提供了一种专门…

我们在从事java开发过程中,或多或少都会遇到一些我们程序员不被期望的事件,它会影响整个程序的整体运行,针对此类情况,Java提供了一种专门处理这类问题的机制:异常处理机制。

我们今天就来了解下它是如何来处理异常情况的。

Java异常简介

程序中出现的错误被称为异常

异常可分为两大类:编译时异常和运行时异常;

编译时异常一般是指语法错误,可以通过编译器的提示加以修正,这里我们不予讨论;

运行时异常包括:

运行错误:如数组下标越界,除数为0等;

逻辑错误:如年龄超过200岁等

产生异常的原因多种多样,大致有:

系统资源不可用:如内存分配失败,文件打开失败,数据源连接失败等等;

程序控制不当:如被零除,负数开方,数组下标越界等等。

当异常发生时,程序一般会作出如下反应:

发生异常的部分产生系统定义的错误信息;

程序意外终止,并将控制权返回操作系统;

程序中所有已分配资源的状态保持不变,这样将会导致资源泄漏。

那么我们就必须对有可能产生的异常进行处理

Try块与catch块

try块:一般用来监视有可能产生异常的代码部分;

catch块:当异常产生后,catch块捕捉异常,并在其中对异常进行处理。

代码示例:

finally块

无论try/catch块中发生了什么,finally块都一定会执行;

当异常发生时,程序可能会意外中断,有些被占用的资源就得不到清理。finally块可以确保执行所有的清理工作;

无论是否发生异常,finally块都将执行;

finally块是可选的,可视具体情况决定是否添加;

finally块必须和try块一起使用,不能单独存在

Throw关键字

throw语句用于手工抛出异常;

执行流程将在throw语句后立即停止,转而寻找与之类型相匹配的catch块;

throw语句的语法是:

throw (异常类型的实例);

Throws关键字

如果某个函数中的代码有可能引发异常,可以使用try/catch块进行处理,这种处理方式成为“内部处理”;

如果不方便在函数内部进行处理,也可以将异常往函数外部传递,这就要使用到关键字throws;

throws用于将函数内部产生的异常抛给主调函数;

一般语法:

返回值类型函数名(参数列表) throws异常类型{

……

}

常见的异常类

异常类的体系结构图

我们来总结一下:

异常是运行时产生的错误;

可以使用try/catch/finally块,配合使用来处理异常;

如有多种类型的异常要进行处理,可以使用多重catch块;

要手动发生异常,使用throw关键字;

任何抛到函数外部的异常,都必须使用throws关键字指定其异常类型;

请注意throw和throws的区别;

自定义异常类一般继承于Exception类;

Exception类是绝大部分异常类的父类,在异常类型不明的情况下,可以都认为是Exception。

OK,异常处理机制今天就分享到这里,你是不是学会了呢?

牛耳推荐资讯
最适合参加IT培训的4类人,有你吗?

最适合参加IT培训的4类人,有你吗?

互联网越来越火,与大家的日常生活息息相关,同时互联网行业的工资也是属于所有行业里面较高的,因此吸引越来越多的人加入其中。到底哪些人最适合参加IT培训,而你又在不在其中呢?就像所有的行业一样,想要从事IT行业,最基本的条件就是要热爱IT行业,即对互联网感兴趣。基本条件具备了,哪些人真正适合参加培训学习......
2020-01-10
同是培训机构出身,为什么薪资相差那么多?

同是培训机构出身,为什么薪资相差那么多?

在互联网和物联网高速发展的今天,IT行业如火如荼,先一批入行的人要么逐步成长成为IT大牛,要么赚的盆满钵满过上富裕生活。IT互联网显示出来的各种利好和高薪诱惑,让越来越多的人争相涌入。高等教育培养出来的科班人才十分有限,为了满足社会和自身需求,各种培训机构鳞次栉比,各路培训机构走出的从业者滔滔不绝。......
2020-01-09
企业到底对从IT培训机构出来的学生是什么态度?

企业到底对从IT培训机构出来的学生是什么态度?

网上有一些关于说“企业不需要IT培训班出来的程序员”这样的话题,引起了激烈的争论,他们列出了几个理由来论证这个话题;当然,大致的理由就是说IT培训班出来的程序员:对编程不是真爱入门门槛过低自学能力差简历造假等主要原因。列出的这些理由,其实比较片面也很牵强,难以论证。客观来讲,现在的高校生最少得有半......
2020-01-08

咨询热线

400-0731-162
  
    • *

    • *