关于异常处理的总结
1、什么是异常处理是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)
2、异常与错误
错误(Error):严重的错误,无法通过修改代码来处理。如JVM运行失败、线程池出错导致JVM无法正确运行。异常(Exception):异常表示程序执行过程中出现的不正常的现象,可以通过修改代码来进行弥补。
3、异常的种类
a) 编译时异常:编译被检测的异常b) 运行时异常:编译时不被检测的异常运行时异常
4、异常体系
a) Throwablei. Error
ii. Exception
1>. RuntimeException
<1>、Throwable
Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。
两个子类的实例,Error 和 Exception,通常用于指示发生了异常情况。通常,这些实例是在异常情况的上下文中新近创建的,因此包含了相关的信息(比如堆栈跟踪数据)。
<2>、Error
Error 是 Throwable 的子类,表示仅靠程序本身无法恢复的严重错误,用于指示合理的应用程序不应该试图捕获的严重问题。
在执行该方法期间,无需在方法中通过throws声明可能抛出但没有捕获的 Error 的任何子类,因为Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。
<3>、Exception
Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件,表示程序本身可以处理的异常。
<4>、RuntimeException
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过,这种异常可以通过改进代码实现来避免。
5、Java处理异常
[java] view plaincopy
1. try
2. {
3. /*需要检测的代码*/
4. }
5. catch(异常类 变量)
6. {
7. /*处理异常的代码*/
8. }
9. finally
10. {
11. /*一定执行的代码*/
12. }
6、throw 与throws的区别
throws放在函数上,后跟异常类,可以跟多个,用逗号隔开;
throw 放在函数内,后跟异常对象。
5, 关于单例设计模式的总结
1、什么是单例设计模式
单例设计模式就是解决一个类在内存中只有一个对象。
想要保证对象唯一:
(1)为了避免其他程序过多的建立该类对象,选控制其他程序建立该类对象
(2)为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象
(3)为了方便其他程序对自定义对象访问,可以对外提供一些访问方式
种类一:饿汉式
[java] view plaincopy
1. /**
2. * 单例设计模式--饿汉式
3. */
4. class SingleHungry
5. {
6. //将构造函数私有化
7. private SingleHungry(){};
8. //在类中创建一个本类的对象
9. private static SingleHungry s=new SingleHungry();
10. //提供一个方法可以获取到该对象
11. public static SingleHungry getInstance()
12. {
13. return s;
14. }
15. }
种类二:懒汉式
[java] view plaincopy
1. /**
2. * 单例设计模式--懒汉式(对象的延迟加载)
3. */
4. public class SingleLazy {
5. //私有化对象s指向空
6. private static SingleLazy s=null;
7. //将构造函数私有化
8. private SingleLazy(){};
9. //提供一个方法获取到该类的对象
10. public static SingleLazy getInstance(){
11. //如果对象是空,建立一个对象
12. if(s==null)
13. s=new SingleLazy();
14. return s;
15. }
16. }
种类三:懒汉式的升级版
[java] view plaincopy
1. /**
2. * 单例设计模式--懒汉式(对象的延迟加载)的升级版
3. */
4. public class SingleLazyImprove {
5. //私有化对象s指向空
6. private static SingleLazyImprove s=null;
7. //将构造函数私有化
8. private SingleLazyImprove(){};
9. //提供一个方法获取到该类的对象
10. public static SingleLazyImprove getInstance()
11. {
12. //用双层判断来加锁
13. if(s==null)
14. {
15. synchronized(SingleLazyImprove.class)
16. {
17. if(s==null)
18. s=new SingleLazyImprove();
19. }
20. }
21. return s;
22. }
23. }