【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的异常处理,布布扣,bubuko.com

时间: 2024-08-07 17:56:51

【java读书笔记】——java的异常处理的相关文章

Java读书笔记一(异常处理)

1.介绍 在开发过程中,都会遇到程序运行时的异常,例如逻辑错误.硬件故障等,本篇博客将会详细的介绍一下Java中的异常处理机制. 2.Try和Catch捕获异常 我们在处理异常过程中经常用到的就是Try和Catch语句了.try语句块能够指出可能出现的异常,随后通过一个或者多个Catch语句块来捕获. 2.1.简单的Try和Catch语法 package com.RuntimeException; public class Sample11_1 { public static void main

think in java 读书笔记

java中没有单独函数的概念,依赖类的方法. java中优化了向前引用,类可以在调用者之后. java中包的命名方法实际上是网址的倒转. c++中因为存在全局变量和函数所以会存在一个变量名冲突的问题,但是java中不存在全局变量,不同程序设计者通过不同的类将相同名字的变量和方法隔离. static关键字 通常,我们创建类时会指出那个类的对象的外观与行为.除非用new 创建那个类的一个对象,否则实际上并 未得到任何东西.只有执行了new 后,才会正式生成数据存储空间,并可使用相应的方法. 但在两种

Effective Java 读书笔记(2创建和销毁对象)

第一章是引言,所以这里不做笔记,总结一下书中第一章的主要内容是向我们解释了这本书所做的事情:指导Java程序员如何编写出清晰.正确.可用.健壮.灵活和可维护的程序. 2.1考虑用静态工厂方法代替构造器 静态工厂方法与构造器相比有四大优势: (1)静态工厂方法有名称,具有适当名称的静态工厂方法易于使用.易于阅读: (2)不必每次在调用它们的时候都创建一个新的对象: (3)可以返回原返回类型的任何子类型的对象: (4)在创建参数化类型实例的时候,它们使代码变得更加简洁. 同时静态工厂方法也有两大缺点

Effective Java读书笔记(4 类和接口)

4.1 使类和成员的可访问性最小化 要区别设计良好的模块和设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰的隔离开来,然后模块之间只通过API进行通信,一个模块不需要知道其他模块内部的工作情况,这个概念被称为信息隐藏或封装,是软件设计的基本原则之一. 4.2 在公有类中使用访问方法而非公有域 坚持面向对象程序设计思想:如果类可以在它所在的包的外部进行访问,就提供访问方法,以保留将来改

Effective Java读书笔记(3对于所有对象都通用的方法)

3.1 覆盖equals时请遵守通用约定 什么时候应该覆盖Object.equals()方法呢? 如果类具有自己特有的"逻辑相等"概念(不同于对象等同的概念),而且超类还没有覆盖equals以实现期望的行为,这时我们就需要覆盖equals方法. Object.equals()方法具有自反性.对称性.传递性.一致性和与null比较返回false的特点. 实现高质量equals方法的诀窍: (1)使用==操作符检查"参数是否为这个对象的引用".如果是,则返回true,这

think in java 读书笔记 3 —— 数据报

目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 概要 1. 数据报基本知识 1. 数据报基本知识 之前套接字中例子使用的都是“传输控制协议”(TCP),亦称作“基于数据流的套接字”.根据该协议的设计宗旨,它具有高度的可靠性,而且能保证数据顺利抵达目的地.换言之,它允许重传那些由于各种原因半路“走失”的数据.而且收到字节的顺序与它们发出来时是一样的.当然,这种控制与可靠性需要我们付出一些代价:TCP 具有非常高的开销. 还有另一种协

【java读书笔记】——java开篇宏观把控 + HelloWorld

学完java有一段时间了,一直没有做相应的总结,总觉得有一种缺憾.从这篇博客开始,将自己平时的学习笔记进行总结归纳,分享给大家. 这篇博客主要简单的介绍一下java的基础知识,主要的目的是扫盲.原来只是听说过java,现在自己真正开始学习了,看完了第一集视频之后,问自己,你知道java是什么吗?问完之后才发现一无所知,上完查一查,简单了解一下,给自己扫盲. 介绍 知道java是一种可跨平台应用软件的面向对象的程序设计语言,就可以了. 组成 Java由四方面组成:java编程语言,java类文件格

读书笔记-----Java并发编程实战(一)线程安全性

线程安全类:在线程安全类中封装了必要的同步机制,客户端无须进一步采取同步措施 示例:一个无状态的Servlet 1 @ThreadSafe 2 public class StatelessFactorizer implements Servlet{ 3 public void service(ServletRequest req,ServletResponse resp){ 4 BigInteger i = extractFromRequest(req); 5 BigInteger[] fact

【java读书笔记】JSTL,快速精通

JSTL并不是什么新颖的技术而且很简单,甚至有人认为JSTL已经过时了.但是我认为它既然存在,就有存在的道理,作为技术人员就应该知道它们是什么,怎么使用,有什么优点. JSTL包含两部分:标签库和EL语言.下面先介绍标签库,再介绍EL语言,最后总结一下JSTL的优点. JSTL JSTL简介 JSTL(JavaServer Page Standard Tag Library,即:JSP标准标签库),是由SUN公司提供的简化JSP页面设计的标签.JSTL是由Core(核心库).Format(格式化