`

【java读书笔记】——java的异常处理

阅读更多

程序在实际环境的运行过程中,安全成为需要首先考虑的重要因素之一,这也是用户和程序员最关心的问题。同时,Java语言健壮性也体现在了能够及时有效地处理程序中的错误,准确的说是Java的异常处理机制为解决安全问题提交了一份满意的答卷。

先从整体上看一下本文要介绍的内容,然后进行详细的分析:

 

1、异常的概念

 

异常又称为例外,是特殊的运行错误对象,对应着Java语言特定的运行错误处理机制。

上面的概念是书本上说的,下面我谈一下自己的看法

其实异常处理机制提供了统一的机制来识别和响应程序错误,异常可以为我们解答3W(what、where、why)问题提供帮助。

①what

如果异常机制使用恰当,被抛出异常的类型可以表明发生了什么程序错误。

②where

发生异常之后,而Stack Trace可以清楚的告诉我们什么地方发生了错误。

③why

为什么发生错误则可以通过看异常信息和Stack Trace来分析。

如果你的异常不能解决上面的3W问题,那么可以证明你对异常使用一定不正确。

 

2、异常的分类

 

这张类图可以很好的说明 Thorwable类是所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。 其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常,下面将详细讲述这些异常之间的区别与联系:

 

1.Error与Exception

 

Error:称为错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理,也可以说成不可以处理的异常

Exception:所有异常类的父类,其子类对应了各种各种具体可能出现的异常事件,一般需要用户声明或捕获,也叫可处理的异常

 

2.runtimeException与非运行时异常(其他异常)

 

runtimeException:一类特殊的异常,如被0除、数组下界超范围,其产生比较频繁,处理麻烦,如果声明或捕获将会对程序可读性和运行效率影响很大。因此系统自动检测并将它们交给缺省的异常处理程序,这样的异常可以处理也可以不处理

非运行时异常:是RuntimeException以外的异常,类型上都属于Exception类及其子类,这类异常是必须要处理的异常,否则程序就不能编译通过。

 

3、异常的捕获和处理

 

异常的捕获和处理是不容易把握的事情,如果处理不当,不但会造成程序的可读性差,而且会导致系统的性能下降,甚至会造成难以发现的错误。异常处理涉及到五个关键字:try、catch、finally、throw、throws。下面我们一一介绍:

 

1、异常处理的基本语法

 

     try{
      //程序代码
    }catch(异常类型 异常的变量名){
      //异常处理代码
    }finally{
      //异常发生,方法返回之前,总是要执行的代码
    }

 

 

①try语句

1.try语句指定了一段代码,该段代码一次捕获并处理例外的范围。

2.在执行过程中,该段代码可能会产生并抛出异常,catch语句捕获并处理。

3.没有例外产生,所有的catch代码段都被忽略不执行。

②catch语句

1.catch语句是对异常进行处理的代码,每个try可以有一个或多个catch语句,用于处理可能产生不同类型的异常对象。
2.在catch中声明的异常对象,封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获得这些信息。

③finally

1.finally语句为异常处理提供了统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态做统一的管理。

2.无论try语句是否抛出异常,finally语句都会被执行

3.finally语句可以释放资源如:关闭打开的文件、删除临时文件等等。

④throw与throws

throw用来在方法体内抛出一个异常。throws用来在方法名后声明方法可能会抛出什么异常。

 

    public static void test() throws Exception{
      //抛出一个检查异常
            throw new Exception("方法test中的Exception");
        } 

 

 

 

2、 异常处理的一般原则


1、 异常能处理就早处理,抛出不去还不能处理的就想法消化掉或者转换为RuntimeException处理。

因为对于一个应用系统来说,抛出大量异常是有问题的,应该从程序开发角度尽可能的控制异常发生的可能。

2、对于异常,先逮小异常再逮大的异常。

因为程序的执行跟人的正常思维是一样,直接捕获基类异常,处理异常变的毫无意义。

 

4、总结

 

一张图,对于异常机制更深刻的理解,才能更好的使用;五个关键字是技术的必备武器,你必须得懂;先逮小的,再逮大的,对于异常的处理原则要把握好,否则就是功归一篑。

 

分享到:
评论

相关推荐

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    JAVA学习笔记————————

    3. **异常处理**:JAVA提供了一种结构化的异常处理机制,学习笔记会解释何时及如何使用try-catch-finally语句块,以及不同类型的异常类。 4. **内存管理与垃圾回收**:JAVA的自动内存管理是通过垃圾回收机制实现的...

    java学习笔记——异常

    Java学习笔记——异常 在Java编程中,异常处理是一项至关重要的技能,它允许开发者优雅地处理程序运行时可能遇到的问题,防止程序意外终止,并提供有用的反馈信息。异常是程序执行过程中遇到的不正常情况,例如除以...

    狂神Java学习笔记————前端入门——html、css、JavaScript学习代码

    【狂神Java学习笔记——前端入门——HTML、CSS、JavaScript学习代码】是针对初学者的一份详实的学习资料,这份笔记记录了跟随B站知名up主“遇见狂神说”的java系列视频中关于前端开发的基础内容。笔记内容不仅与视频...

    Thinking in Java 自学笔记——第一章 对象导论

    Thinking in Java 自学笔记——第一章 对象导论 本章节总结了面向对象程序设计(Object-oriented Programming, OOP)的基本概念和原则,以帮助读者更好地理解 Java 编程语言。以下是对标题、描述、标签和部分内容的...

    Thinking in Java 自学笔记——第二章 一切皆对象

    ### Thinking in Java 自学笔记——第二章 一切皆对象 #### 重要概念解析 ##### 2.1 用引用操纵对象 在Java中,一切都被视为对象,这意味着无论是字符串、数字还是其他数据类型都可以被视为对象来进行操作。当...

    个人学习的java笔记——思维导图

    这份"个人学习的java笔记——思维导图"是作者学习Java过程中的总结,通过思维导图的形式,将复杂的概念和知识结构化,便于理解和记忆。下面,我们将深入探讨其中涉及的一些关键知识点。 1. **基础语法**:Java的...

    Java JDK 6学习笔记——ppt简体版

    7. **异常处理**:理解何时抛出异常,如何捕获和处理异常,以及try-catch-finally语句块的使用。 8. **输入/输出流**:学习I/O流的基本操作,包括文件读写和网络通信。 JDK 6的特色功能可能包括: 1. **改进的Swing...

    Java JDK 6学习笔记——ppt简体版.rar

    通过"Java JDK 6学习笔记——ppt简体版",学习者可以系统地学习到如何使用JDK 6进行开发,包括环境配置、基本语法、类库使用、异常处理、IO流、网络编程、多线程等各个方面。PPT格式通常直观易懂,便于快速理解和...

    Java JDK 6学习笔记——ppt简体版附课本代码

    这份“Java JDK 6学习笔记——ppt简体版”涵盖了Java语言的核心概念、语法特性以及JDK 6的新功能,旨在帮助初学者和有经验的开发者深入理解并掌握这一版本的Java开发环境。 首先,Java JDK 6的安装与配置是学习的...

    Java JDK 6学习笔记——ppt

    Java JDK 6学习笔记——PPT简体版是针对初学者和有经验的开发者们的一份宝贵资源,它深入浅出地介绍了Java编程语言的核心概念和技术。这份资料以PPT的形式呈现,使得学习过程更加直观易懂,同时包含了课程中的源代码...

    Java笔记——2017年3月3日

    这份"Java笔记——2017年3月3日"涵盖了多个关键概念,对于深入理解Java编程至关重要。下面将逐一详解这些知识点: 1. **泛型**:泛型是Java 5引入的一项特性,它允许在类、接口和方法中使用类型参数,增强了代码的...

    JAVA 私塾笔记整理——反射机制(Reflection)

    Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性...通过阅读"JAVA私塾笔记整理——反射机制(Reflection)",你可以更全面地理解和掌握这一关键特性。

    Java NIO学习笔记——ByteBuffer用法

    在阅读或实现`byteBufferTest.java`时,注意观察如何利用ByteBuffer的特性进行高效的数据传输,例如与FileChannel配合读写文件,或者在网络编程中与SocketChannel交互。同时,理解源码可以帮助深入理解Java NIO的...

    Java JDK 6学习笔记——ppt简体版 第20章.ppt

    Java JDK 6学习笔记——ppt简体版 第20章.ppt

    Java JDK 6学习笔记——ppt简体版 第19章.ppt

    Java JDK 6学习笔记——ppt简体版 第19章.ppt

Global site tag (gtag.js) - Google Analytics