Java编程思想笔记(通过异常处理错误)

1.概念

2.基本异常:异常情形是指阻止当前方法或作用域继续执行的问题。

2(1).异常参数:所有标准异常类都有两个构造器:一个是默认构造器;另一个是接受字符串作为参数,以便能把相关信息放入异常对象的构造器。

3.捕获异常

3(1).try块:如果在方法内部抛出了异常,这个方法将在抛出异常的过程中结束。要是不希望方法就此结束,可以在方法内设置一个特殊的块来捕获异常。因为在这个块里“尝试”各种(可能产生异常的)方法调用,所以称为try块

3(2).异常处理程序:异常处理理论上有两种基本模型。终止模型:将假设错误非常关键,以至于程序无法返回到异常发生的地方继续执行。恢复模型:异常处理程序的工作是修正错误,然后重新尝试调用出问题的方法(那么在遇见错误时就不能抛出异常,而是调用方法来修正该错误。或者,把try块放在while循环里,这样就不断地进入try块,直到得到满意的结果。)

4.创建自定义异常:要自定义异常类,必须从已有的异常类继承,最好是选择意思相近的异常类继承。建立新的异常类型最简单的方法就是让编译器为你产生默认构造器。

4(1).异常与记录日志:静态的Logger.getLogger()方法创建了一个String参数相关联的Logger对象(通常与错误相关的包名和类名),这个Logger对象会将其输出发送到System.err。向Logger写入的最简单方式就是直接调用与日志记录消息的级别相关联的方法,这里使用的是severe()。为了产生日志记录消息,我们欲获取异常抛出处的栈轨迹,但是printStackTrace()不会默认地产生字符串。为了获取字符串,我们需要使用重载printStackTrace()方法,它接受一个java.io.PrintWriter对象作为参数。

5.异常说明:如果方法里的代码产生了异常却没有进行处理,编译器会发现这个问题并提醒你:要么处理这个异常,要么就在异常说明中表明此方法将产生异常。 异常说明使用了附加的关键字throws,后面接一个所有潜在异常类型的列表。

6.捕获所有异常:只写一个异常处理程序来捕获所有类型的异常。通过捕获异常类型的基类Exception,就可以做到这一点 catch(Exception e) { System.out.println("Caught an exception");}

6(1).栈轨迹

6(2)重新抛出异常: catch(Exception e) {{ System.out.println("Caught an exception"); throw e;}

6(3).异常链:常常会想要在捕获一个异常后抛出另一个异常,并且希望把原始异常的信息保存下来,这被称为异常链。

7.Java标准异常:

7(1).特例:RuntimeException。如果对null引用进行调用,Java会自动抛出NullPointerException异常(这不必由你亲自来做,它属于Java的标准运行时检测的一部分)。

8.使用finally进行清理:无论try块中的异常是否抛出,它们都能得到执行。这通常适用于内存回收之外的情况。

8(1).finally用来做什么:当要把除内存之外的资源恢复到它们的初始化状态时,就要用到finally子句。这种需要清理的资源包括:已经打开的文件或网络连接,在屏幕上画的图形,甚至可以是外部世界的某个开关。

9.异常的限制:

时间: 2024-10-10 02:19:36

Java编程思想笔记(通过异常处理错误)的相关文章

Java编程思想(九) —— 通过异常处理错误(1)

前阵子看到一个编程的学习方法--橡皮鸭调试法,就是拿一只小黄鸭. 面对面,跟他讲解你的编程思路,如果你没有橡皮鸭或者是一个能听你讲java,c,cpp,前端,io,系统内核,汇编,数据结构,计算机网络的女朋友,那么写博客也是你自己梳理好思路的一个好方法. 书中原话:java的基本理念是结构不佳的代码不能运行. 其实我之前也搞不懂为什么要弄个这样的东西出来,其实跟书上讲的一样,"异常"有"对此感到意外"的意思,问题出现了,我们不知道怎么处理,但又不能置之不理,可以停下

Java编程思想(十一) —— 通过异常处理错误(2)

前面一篇提到异常的基本概念和使用的原因,后面一截比较难,然后就分开写出来. 1)finally清理 对于一些代码,无论try有无抛出,都希望执行,为了这样可以在异常处理最后加上finally语句.印象最深的是与数据库打交道的时候,finally永远要记得回收Connection等等. 这样无论异常是否抛出,finally子句总能被执行.这样就不怕发生内存中的资源一直占用的情况,印象深刻的还有老师讲的,公司一个新来的忘记写finally语句,后面内存的东西越来越多,整个系统死掉了. 有一个特别的是

java编程思想笔记(第一章)

Alan Kay 第一个定义了面向对象的语言 1.万物皆对象 2.程序是对象的集合,他们彼此通过发送消息来调用对方. 3.每个对象都拥有由其他对象所构成的存储 4.每个对象都拥有其类型(TYpe) 5.某一特定类型的所有对象都可以接收同样的消息. Booch提出一种更简洁的描述: 对象拥有状态(state) 行为(behavior) 和标识(identity) 每个对象都有一个接口 每个对象都属于定义了特性和行为的某个类(特性可以理解为属性的状态,行为可以理解为method) 在面向对象的程序设

Java编程思想笔记(第二章)

第二章  一切都是对象 尽管Java是基于C++的,但相比之下,Java是一种更纯粹的面向对象程序设计语言. c++和Java都是杂合型语言(hybird language) 用引用(reference)操作对象 类似遥控器(引用)来操作电视(对象) 在Java中你可以创建一个引用,但是没有与任何对象关联,比如: String s; 这个时候如果用则会报错.安全的做法是: 创建一个引用的同时并进行初始化 String s="1111"; 必须由你创建所有对象 New关键字的意思是给我一

7.JAVA编程思想笔记隐藏实施过程

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040237 "进行面向对象的设计时,一项基本的考虑是:如何将发生变化的东西与保持不变的东西分隔开." Java 推出了"访问指示符"的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的.这种访问控制的级别在"最大访问"和"最小访问"的范围之间,分别包括:public,"友好的

java 编程思想笔记(二)——初始化

一.问题 随着计算机革命的发展,"不安全"的编程方式已逐渐成为编程代价高昂的主因之一. 初始化和清理正是涉及安全的两个问题. 二.java 解决方案 构造器:一种特殊的方法.java 中"初始化"和"创建"捆绑在一起,两者不能分离. 垃圾回收器:释放无用的对象. 三.方法重载 为什么要在这里讲方法重载?我觉得首先:构造器是一种特殊的方法,再一个,构造器除了默认构造器还有有参构造器.为了让方法名称相同而形式参数不同的构造器同时存在,就必须用到方法重

Java编程思想学习(九) 异常处理

java的异常处理机制可以使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续执行的问题,,当程序运行时出现异常时,系统就会自动生成一个Exception对象来通知程序.这样就极大的简化了我们的工作. 当然java的异常对象有很多种,下面这幅图显示了java异常类的继承体系.  从图片中可以看到java将所有的非正常情况分成了两种: 异常(Exception)和错误(Error),他们都继承Throwable父类.Error错误一般是指与虚拟机相关的问题,如系统崩

Java编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)

1.组合和继承之间的选择 组合和继承都允许在新的类中放置子对象,组合是显式的这样做,而继承则是隐式的做. 组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形.即在新类中嵌入某个对象,让其实现所需要的功能,但新类的用户看到的只是为新类所定义的接口,而非所嵌入对象的接口.为取得此效果,需要在新类中嵌入一个现有类的private对象.但有时,允许类的用户直接访问新类中的组合成分是极具意义的,即将成员对象声明为public.如果成员对象自身都隐藏了具体实现,那么这种做法是安全的.当用户能够了

Java编程思想笔记(操作符)

1.更简单的打印语句:print();     2.使用Java操作符:1.例外的操作符“=”.“==”.“!=”,这些操作符能操作所有的对象.2.String支持+=.+     3.优先级     4.赋值:直接操作对象内的域容易导致混乱     4(1).方法调用中的别名问题     5.算数操作符:Random rand = new Random(47);//随机生成器对于特定的种子值总是产生相同的随机数序列     5(1).一元加.减操作符     6.自动递增和递减:++a(先加,