拋出異常方法我有一個由JButton Actionperformed觸發的Login方法。從方法
private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
Users userData = userDAO.login(Integer.parseInt(loginUserId.getText()), String.valueOf(loginUserPassword.getPassword()));
} catch (SQLException ex) {
LOGGER.log(Level.SEVERE, ex.toString(), ex);
JOptionPane.showMessageDialog(null, "Error SQL: Please Contact your System Administrator", cf.WINDOW_TITLE, JOptionPane.ERROR_MESSAGE);
} catch (NullPointerException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), cf.WINDOW_TITLE, JOptionPane.ERROR_MESSAGE);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Pls write a number", cf.WINDOW_TITLE, JOptionPane.ERROR_MESSAGE);
}
}
這是我的方法,從數據庫中返回一個對象。
public Users login(int userId, String password) throws NumberFormatException, SQLException , NullPointerException {
SQL sql = new SQL();
query = sql.createPStatement(cf.SELECT_USER_BY_LOGIN_DATA);
query.setInt(1, userId);
query.setString(2, password);
ResultSet resultSet = query.executeQuery();
try {
if (!resultSet.isBeforeFirst()) {
throw new NullPointerException("User Not Found");
}
while (resultSet.next()) {
Users newLoggedUser = new Users();
//Set Object Values
return newLoggedUser;
}
} catch (SQLException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
throw e;
}
catch (NullPointerException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
throw e;
} catch (NumberFormatException e) {
LOGGER.log(Level.SEVERE, e.toString(), e);
throw e;
} finally {
SQLUtils.closeQuietly(sql.dbConection());
SQLUtils.closeQuietly(resultSet);
SQLUtils.closeQuietly(query);
}
return null;
}
我要顯示多個錯誤信息到用戶accorgding到:找不到
- 用戶(無SQL結果);
- 鍵入字母而不是數字
- SQL錯誤。
我對此有些疑問:
我應該停止的應用做更多的動作,其中我的結果/對象是
NULL
,使用throw new NullPointerException("User Not Found");
安全地使用這些異常發送用戶消息,例如對象爲空(「用戶未找到」),並通過DAO方法拋出它們以被捕獲/顯示
JButton ActionPerformed try/Catch?
我應該在DAO方法中記錄例外情況? ,或者ActionPerformed try/Catch ?.
我應該再次在DAO方法
throw e;
被ActionPerformed try/Catch
捕獲嗎?
像總是非常感謝你的幫助。
你應該幾乎不必趕'NullPointerException'。它表明你(程序員)在正在使用的語言或API方面做了不正確的事情。 –
''拋出新的NullPointerException(「未找到用戶」);「'你不是解引用空引用,這不是正確的例外使用。如何處理'NoSuchElementException'呢? –
「鍵入字母而不是數字」< - 我寧願做一個快速的正則表達式檢查,然後將數據發送到您的查詢函數,而不是依賴於NumberFormatException –