10.17-设计模式与异常
设计模式(Design Pattern)
是一套被反复使用、多数人知晓的、经过分类的代码设计经验的总结
使用设计模式的目的很简单:为了代码的可重复性,让代码更容易被他人理解,保证了代码的可靠性。
设计模式使代码的编程真正的工程化,设计模式是软件工厂的基石脉络,如同大厦的结构一般。
分类
设计模式可以分为三大类
创建型模式:单例模式、工厂模式等等
结构型模式:装饰模式、代理模式等等
行为型模式:模板模式、迭代器模式等等
单例模式(Singleton Pattern)
单例模式是Java中最简单的设计模式(思想)之一,这种设计模式属于创建型模式;它提供了一种创建对象的最佳方式,即保证一个类只有一个实例,并提供了一个访问它的全局访问点
例子
package se02;
//单例模式示例(饿汉式)
public class Singleton {
//第一步:私有化构造器
private Singleton(){
}
//第二步:声明一个私有的、静态的当前类的实例
private static Singleton instance = new Singleton();
//第三步:声明一个公有的、静态的、能够返回当前实例的方法
public static Singleton getInstance() {
return instance;
}
public void showMessage() {
System.out.println("Hello Singleton");
}
}测试类
模板模式
所谓的模板模式指的是定义一个操作中算法过程骨架,而将一些步骤延迟到子类中去实现
示例
首先创建模板类
再创建实现类
最终创建测试类
Java中异常结构的父类Throwable(问题类)
其派生出了两个子类别
Error:表示JRE的错误,该类问题无法通过修改程序来解决
StackOverflowError:栈内存溢出
OutOfMemoryError:堆内存溢出
Exception:表示程序级别的异常,该类问题可以通过修改程序来解决
注意
异常是行为、方法、过程的意外结果
一个方法如果抛出(throw)了异常,那么这个方法就必须声明异常的抛出(throws)
异常的声明:在方法上声明方法的意外结果
异常类一般都继承自Exception
如果调用一个抛出异常的方法,则必须要处理异常;有两种方案:
使用try-catch-finally捕获异常,并解决异常
使用throws关键字直接抛出异常
如果出现异常,异常以后的代码将不再执行(除了finally类当中的代码)
Java异常捕获机制(try-catch)
语法
例子
throw关键字(主动抛出异常)
通常在以下两种情况会主动抛出异常:
当前语法片段出现了一个不满足业务逻辑情况的异常,我们需要主动抛出异常
当前代码片段出现的异常,但是该异常的处理不应该是当前代码片段负责时,我们需要主动的抛出异常
例子-主动异常抛出并处理异常
例子-主动异常抛出但不处理异常
throws关键字
该关键字用于在声明方法时连同声明该方法可能抛出的异常种类
以通知调用者在调用这些方法时应当对方法中的这些异常进行处理
Java中将异常分为检查异常和非检查异常
非检查异常:RuntimeExcetion及其子类
当程序中抛出(throw)了一个RuntimeExcetion及其子类时,Java编译器会在编译时不检查该类是否被处理
检查异常:除了RuntimeExcetion及其子类
当程序中抛出(throw)了一个检查异常时,Java编译器会在编译时检察该类异常是否有处理代码,如果没有则编译不通过
例子
练习
1.编写一个程序,以说明catch(Exception e)如何捕获 各种异常。
2.创建一个Exception类的子类DivideByZeroException, 代表除数为0异常;编写一个TestDivideByZero类, 该类包括一个方法div(double a,double b),实现两 个参数的相除操作,如果b为0,则生成异常对象, 并抛出异常,否则得到a/b的结果。 然后在main函数中调用div方法,然后处理异常。
最后更新于