`
dasheng
  • 浏览: 148610 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

<java编程思想>学习笔记12 第12章 通过异常 处理错误

阅读更多

1,java的基本理念是:结构不佳的代码不能运行。

 

2,当异常抛出后,有几件事会随之发生。首先,同java的其他对象的创建一样,将使用new在堆上创建异常对象。然后,

 

当前的执行路径(它不能继续下去了)被终止,并且从当前的环境中弹出对异常的引用。此时,异常处理机制接管程序。并

 

开始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是异常处理程序,它的任务就是将程序从错误状态中恢复,以

 

使程序要么换一种方式运行,要么继续运行下去。

 

3,异常的参数

 

所有标准的异常类都有两个构造器:

1个是默认构造器;另一个是接受字符串作为参数,以便把相关的信息放入异常对象的构造器。

 

4,能够抛出任意类型的Throwable对象,它是异常类型的根类。通常,异常对象中仅有的信息就是异常类型,除此之外不包含任何有意义的内容。

 

5,异常说明

 

java鼓励人们把方法可能会抛出的异常告知使用此方法的客户端程序员。

 

异常说明使用了附加的关键字throws,后面接一个所有潜在的异常类型的列表,看起来方法象这样:

 

void f() throws toolBig,TooSmall,DivZero {//

 

5,exception基类Throwable,方法如下:

 

String getMessage();

String getLocallizedMessage();

 

 

void printStackTrack();

 

void printStackTrack(PrintStream);

 

void printStackTrack(java.io.PrintWriter);

 

6,无论异常是否抛出,finally子句总会被执行。

 

class ThreeException extends Exception {}

public class FinallyWorks {
  static int count = 0;
  public static void main(String[] args) {
    while(true) {
      try {
        // Post-increment is zero first time:
        if(count++ == 0)
          throw new ThreeException();
        System.out.println("No exception");
      } catch(ThreeException e) {
        System.out.println("ThreeException");
      } finally {
        System.out.println("In finally clause");
        if(count == 2) break; // out of "while"
      }
    }
  }
} /* Output:

 

 

 

7,异常的丢失

 

class VeryImportantException extends Exception {
  public String toString() {
    return "A very important exception!";
  }
}

class HoHumException extends Exception {
  public String toString() {
    return "A trivial exception";
  }
}

public class LostMessage {
  void f() throws VeryImportantException {
    throw new VeryImportantException();
  }
  void dispose() throws HoHumException {
    throw new HoHumException();
  }
  public static void main(String[] args) {
    try {
      LostMessage lm = new LostMessage();
      try {
        lm.f();
      } finally {
        lm.dispose();
      }
    } catch(Exception e) {
      System.out.println(e);
    }
  }
} /* Output:

 

8,在finally子句中执行return造成异常的丢失

 

public class ExceptionSilencer {
  public static void main(String[] args) {
    try {
      throw new RuntimeException();
    } finally {
      // Using 'return' inside the finally block
      // will silence any thrown exception.
      return;
    }
  }
} ///:~

 

输出结果,发生了异常也没有任何输出。

 

 

分享到:
评论

相关推荐

    Java编程思想笔记(全)

    第十二章讲解了Java中的异常处理机制。异常处理是处理程序运行时错误的有效方式。本章首先介绍了异常的概念,然后详细讨论了如何使用try-catch-finally语句来捕获和处理异常,以及如何自定义异常类来处理特定类型的...

    Java/JavaEE 学习笔记

    第十二章 Altering Tables and Constraints..142 第十三章 Creating Sequences..........145 第十四章 Creating View(创建视图)146 第十五章 Creating Indexes(创建索引).....148 第十六章 权限的授予与收回...........

    java实战经典学习笔记

    ### Java实战经典学习笔记知识点概览 #### 一、Java概述及开发环境搭建 - **Java概述** - Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年发布。 - Java的设计目标是“一次编写,到处运行”,这...

    java私塾学习笔记整理

    #### 第十二章:I/O流 Java I/O流用于处理输入输出操作。 **一、继承InputStream字节流** 用于读取字节数据的抽象类。 **二、继承OutputStream字节** 用于写入字节数据的抽象类。 **三、继承Reader流** 用于...

    JAVA经典教材笔记

    #### 第十二章:JAVA IO - **File类** - File类的作用:操作文件和目录。 - File类的常用方法:createNewFile()、delete()等。 - **RandomAccessFile类** - RandomAccessFile类的特点:支持随机访问文件。 - ...

    Java 基础 第2阶段:面向对象编程-尚硅谷学习笔记(含面试题) 2023年

    面向对象编程是Java的核心特性,本学习笔记涵盖了这一主题的深度探索,旨在帮助开发者深入理解并熟练运用面向对象的思想。2023年的版本更新可能包含最新的面试趋势和技术发展。以下将详细介绍Java面向对象编程的一些...

    J2EE学习笔记(J2ee初学者必备手册)

    第十二章 Altering Tables and Constraints..142 第十三章 Creating Sequences..........145 第十四章 Creating View(创建视图)146 第十五章 Creating Indexes(创建索引).....148 第十六章 权限的授予与收回...........

    thinkinjava源码-ThinkingInJava:《Java编程思想4th》学习笔记Notesandsourcecodesaboutt

    本资源包含了这本书第四版的学习笔记和源代码,旨在帮助读者更好地理解和掌握Java编程思想。以下是对这些知识点的详细阐述: 1. **面向对象编程(OOP)**:Java是一种纯面向对象的语言,它强调类、对象、封装、继承...

    张龙 java se课程笔记

    【Java SE课程笔记详解】 Java SE(Standard Edition)是Java平台的核心版本,它为开发桌面应用、服务器端...通过深入学习和实践,你可以扎实掌握Java编程基础,为进一步深入学习Java EE或Android开发打下坚实的基础。

    c#学习笔记.txt

    详细介绍请参阅rainbow(一个长着胡子的彩虹)翻译的&lt;&lt;展现C#&gt;&gt; ,前几章非常的有趣。 看完了前面几段,我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什么的也...

    java视频教程_黑马Java零基础辅导班[第二期]13天课件源码

    "第十三天 笔记.txt"可能包含了对课程最后一天所学内容的总结,可能是关于异常处理、多线程、集合框架或IO流等高级主题。在Java中,异常处理是程序健壮性的重要组成部分,通过try-catch-finally语句块捕获并处理可能...

    java视频教程_黑马Java零基础辅导班[第二期]10天课件源码

    通过观看这些视频,学习者可以逐步理解并应用Java编程思想。 【Java基础】 在Java基础部分,你将学到如何声明和使用变量,理解基本数据类型(如整型、浮点型、字符型和布尔型)。此外,还将深入学习流程控制语句...

    韩顺平-循序渐进学Java零基础完整笔记

    《韩顺平-循序渐进学Java零基础完整笔记》是一份专为初学者设计的Java编程学习资料,由知名IT教育专家韩顺平老师精心编撰。这份笔记覆盖了从Java语言基础到进阶应用的全方位内容,旨在帮助没有编程背景的学员逐步...

    八种编程语言毕业设计参考文献

    《Java程序设计与应用开发》第二版**(2014):该书通过实例讲解Java编程的基本概念和技术要点,有助于提高学生的实践能力。 3. **王爱国.《Java面向对象程序设计》**(2014):侧重于面向对象的编程思想和方法,...

    2023年java基础总结大全笔记.doc

    Java是一种广泛使用的编程语言,以其跨平台性和强大的功能而闻名。以下是对《2023年Java基础总结大全笔记》的详细...以上就是对Java基础的详尽解析,涵盖了从基本概念到高级特性的多个方面,是学习Java编程的良好起点。

    Thingking in java

    "第二版的"标签表明我们讨论的是该书的一个早期版本,虽然Java语言已经发展到多个新版本,但第二版仍然包含了Java基础的精髓,对于初学者理解语言的基本构造和编程思想非常有帮助。 在压缩包中的文件《ThinkinJava....

    【藏宝图】(珍藏版)2012java开发工程师必备精品资料(115)

    这套课件适合完全没有Java编程经验的新手,内容涵盖了Java基础语法、面向对象编程、异常处理等多个方面。通过学习这些基础知识,初学者可以建立起坚实的Java编程基础。 #### 七、Java开发的毕业设计源码大全 这份...

    java参考文献

    Java编程思想[M]. 第4版. 机械工业出版社. - 内容概述:本书是Java领域内的一本经典著作,深入浅出地介绍了Java编程的基本概念、面向对象编程思想以及设计模式等内容。 - 关键知识点: - 面向对象编程(OOP)的...

    spring框架案例学习文档笔记

    #### 第十二课:SSH整合存在的问题 - **常见问题**: - JSP访问Session失败。 - 不配置事务导致的问题。 - 中文乱码处理。 #### 第十三课:SSH整合的jar包 - **所需JAR包**: - **Struts2**:包含Struts2核心库...

Global site tag (gtag.js) - Google Analytics