自定义异常时exception is never thrown in the corresponding try block和unhandled exception
生活随笔
收集整理的這篇文章主要介紹了
自定义异常时exception is never thrown in the corresponding try block和unhandled exception
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自己的異常:
public class UserNotExistsException extends Exception{private static final long serialVersionUID = 1L;public UserNotExistsException(){super("user.not.exists", null);} }調用:
@Overridepublic User selectUserByLoginName(String userName,String password) {if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(password)){//校驗空//信息寫入到用戶操作日志中// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));throw new UserNotExistsException();}if(userMapper.selectUserByLoginName(userName,password)==null){throw new UserPasswordNotMatchException();}return userMapper.selectUserByLoginName(userName,password);}另一處調用service的地方:
User user = null; try {user = userService.selectUserByLoginName(username, password); }catch (UserNotExistsException e){throw new UnknownAccountException(e.getMessage(),e);}...全局處理:
@ExceptionHandler(UserNotExistsException.class)@ResponseBodypublic ResponseResult handUserException(){return ResponseResult.error(ResponseEnum.USERNAME_OR_PASSWORD_ERROR,ResponseEnum.USERNAME_OR_PASSWORD_ERROR.getDesc());}解決:應該改成extends RuntimeException
注意, RuntimeException是Exception的子類,與IOEXCEPTION同級,java將派生于 RuntimeException的所有異常稱為未檢查異常,所有其他的異常為已檢查異常, RuntimeException這個名字容易讓人混淆,實際上現在討論的所有錯誤都發生在運行時
java.lang.Throwable 1.0
·Throwable()構造一個新的Throwable對象,這個對象沒有詳細的描述信息。
·Throwable(String message) 構造一個新的throwable對象,這個對象帶有特定的詳細描述信息。習慣上,所有派生的異常類都支持一個默認的構造器和一個帶有詳細描述信息的構造器。
·String getMessage() 獲得Throwable對象的詳細描述信息。
總結
以上是生活随笔為你收集整理的自定义异常时exception is never thrown in the corresponding try block和unhandled exception的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用java的stream流库在实际项目的
- 下一篇: springboot整合websocke