在上篇中,已经将整体的实现过程详细展示出来了,对于个人而言,在写代码的时候总会碰到一些难点和学习到一些新的东西,接下来,我想把这些总结记录下来,希望在这里能看到自己的成长。
*Dao层
1.对于具体实现类和接口的抽取的过程中,其实两者的顺序是可以相互交换。可以先实现具体实现类,然后将其进行抽取出来成接口,具体在Eclipse中抽取方式为:点击当前具体实现类——>选择refactor(重构)——>选择Extract interface(接口)——>点击确认,最后成功抽取接口,当然也可以先写接口和一些抽象方法,然后写实现类时继承接口,重写抽象方法即可。
2.自定义异常UserExistException,具体是为了捕捉用户不存在时的编译时异常,无论是利用标准API异常类来处理特殊的异常,或者编写自定义的异常类来达到同样目的,问题的关键是:当这个异常发生时,如何及时捕获这个异常;捕获这个异常后,如何产生精确的异常处理信息。在这里,此处不能使用运行时异常(RuntimeException)。这就要明白运行时异常和编译时异常的区别。
那么何为运行时异常?何为编译时异常?这两者又有什么区别?适应场景?
运行时异常可以通过改变程序避免这种情况发生,比如,除数为0异常,可以先判断除数是否是0,如果是0,则结束此程序。从继承上来看,只要是继承RunTimeException类的,都是运行时异常,其它为编译时异常。使用抛出处理方式处理异常时,对于编译时异常,当函数内部有异常抛出,该函数必须声明,调用者也必须处理,运行时异常则不一定要声明,调用者也不必处理。
//例如抛出ArithmeticException异常:
public class Test {
public static int a=0;
public static void main(String[] args){
// TODO Auto-generated method stub
a = test(4,0);
}
public static int test(int a,int b){
if(b==0){