精彩牛耳,用心缔造

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,异常处理机制今天就分享到这里,你是不是学会了呢?

牛耳推荐资讯
听说Java工程师的薪资高,没有英语基础能学Java吗?

听说Java工程师的薪资高,没有英语基础能学Java吗?

Java的各种代码都是由英语字母组成的,这让很多不熟悉英语的人会担心自己学不会,从而放弃学习Java的想法。今天牛耳君就给大家分析下Java培训是否需要英语基础吗?Java语言虽然代码都是英文的,但是并不代表只有英语好的人才能学会Java,因为Java编程常用的口令代码就那些,只要将这些常用的口令代码背熟就可以编写程......
2019-10-24
Java培训之学无止境

Java培训之学无止境

培训完java基础,对java面向对象的思想有更加深刻的认识了,从学习java语言概述到目前学习的集合,回首感觉快又感觉漫长,学的东西确实挺多的,很多知识也感觉比较抽象,特别是第一条三大特性(封装,继承,多态),第二条关键字。学完面向对象就学习集合。我感到很幸运,遇到一个好老师,就是我们的牛耳的老司机全老......
2019-10-24
Java培训--只要改变,任何时候都不晚

Java培训--只要改变,任何时候都不晚

做什么事情,只要改变,任何时候都不晚,大家好我是来自牛耳Java培训班的一名学员,在来牛耳之前我是一名普通的电话销售人员,每个月拿着4000多的工资,在上家公司工作了2年收获了人生的第一桶金,在工作中学到了很多东西包括,5W1Hd的高效管理办法,SMART管理原则等一些经验,和与人的沟通经验还是非常感谢,上家公司对我的培养......
2019-10-24

咨询热线

400-0731-162
  
    • *

    • *