【J2SE】——異常實踐篇

         本文小編以用戶登錄爲例,進行異常處理。

         首先新建實體類User.java:

/**
 * Created by why_768 on 2017/2/16.
 */
public class User {
    int id;
    String email;
    String pwd;
    public User(){

    }
    public User(int id,String email,String pwd){
        super();
        this.id=id;
        this.email=email;
        this.pwd=pwd;
    }
    @Override
    public String toString(){
        return id + "," + email;
    }
    @Override
    public boolean equals(Object obj){
        if(obj == null){
            return false;
        }
        if(this == obj){
            return true;
        }
        if(obj instanceof User){
            User o=(User)obj;
            return id == o.id;
        }
        return false;
    }
    @Override
    public int hashCode(){
        return id;
    }
}

          然後新建兩種聲明式異常:

/**
 * Created by why_768 on 2017/2/16.
 * 該類表示用戶已經註冊過異常
 */
public class UserExistsException extends Exception{
    public UserExistsException(String message){
        super(message);
    }
}

/**
 * Created by why_768 on 2017/2/16.
 * 該類表示用戶或密碼錯誤異常
 */
public class EmailOrPwdException extends Exception {
    public EmailOrPwdException(String message){
        super(message);
    }
}

         創建用戶管理類UserManager:

import java.util.HashMap;
import java.util.Map;

/**
 * Created by why_768 on 2017/2/16.
 */
public class UserManager {
    //存儲對象的集合,key是email,value是用戶
    private Map<String,User> users=new HashMap<String, User>();
    private int id=1;
    public User reg(String email,String pwd) throws UserExistsException{
        if(users.containsKey(email)){
            throw new UserExistsException("該郵箱" + email + "已存在");
        }
        User user=new User(id++,email,pwd);
        users.put(email,user);
        return user;
    }
    public User login(String email,String pwd) throws EmailOrPwdException{
        if(!users.containsKey(email)){
            throw new EmailOrPwdException("無此用戶!");
        }
        User user=users.get(email);
        if(!user.pwd.equals(pwd)){
            throw new EmailOrPwdException("密碼錯誤!");
        }
        return user;
    }
}
          建立測試類:

public class Main {

    public static void main(String[] args) throws Exception{
        UserManager mgr=new UserManager();
        User user=mgr.reg("[email protected]","123");
        System.out.println("註冊成功!");
       //測試1,重複註冊,出現異常
        user=mgr.reg("[email protected]","123");
       //測試2,登錄密碼錯誤,出現異常,密碼不對
        user=mgr.login("[email protected]","1233");
        //測試3,登錄成功!
        User someone=mgr.login("[email protected]","123");
        System.out.println(someone);
    }
}

           總結:

 

         代碼調用拋出異常的方法,必須處理異常,有兩種方式:

        1、使用try catch finally 捕獲

        2、直接再拋出異常

        處理異常的方式依賴具體業務邏輯,可靈活處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章