Je ne peux pas comprendre exactement comment return
travaux en try
, catch
.
- Si j'ai
try
etfinally
sanscatch
, je peux mettrereturn
à l'intérieur de l'try
bloc. - Si j'ai
try
,catch
,finally
, je ne peux pas mettrereturn
dans latry
bloc. - Si j'ai un
catch
bloc, je dois me mettre à l'return
à l'extérieur de l'try
,catch
,finally
blocs. - Si je supprime l'
catch
bloc etthrow Exception
,, je peux mettre l'return
à l'intérieur de l'try
bloc.
Comment font-ils exactement? Pourquoi je ne peut pas mettre la return
dans la try
bloc?
Code avec try
, catch
, finally
public int insertUser(UserBean user) {
int status = 0;
Connection myConn = null;
PreparedStatement myStmt = null;
try {
// Get database connection
myConn = dataSource.getConnection();
// Create SQL query for insert
String sql = "INSERT INTO user "
+ "(user_name, name, password) "
+ "VALUES (?, ?, ?)";
myStmt = myConn.prepareStatement(sql);
// Set the parameter values for the student
myStmt.setString(1, user.getUsername());
myStmt.setString(2, user.getName());
myStmt.setString(3, user.getPassword());
// Execute SQL insert
myStmt.execute();
} catch (Exception exc) {
System.out.println(exc);
} finally {
// Clean up JDBC objects
close(myConn, myStmt, null);
}
return status;
}
Code avec try
, finally
sans catch
public int insertUser(UserBean user) throws Exception {
int status = 0;
Connection myConn = null;
PreparedStatement myStmt = null;
try {
// Get database connection
myConn = dataSource.getConnection();
// Create SQL query for insert
String sql = "INSERT INTO user "
+ "(user_name, name, password) "
+ "VALUES (?, ?, ?)";
myStmt = myConn.prepareStatement(sql);
// Set the parameter values for the student
myStmt.setString(1, user.getUsername());
myStmt.setString(2, user.getName());
myStmt.setString(3, user.getPassword());
// Execute SQL insert
myStmt.execute();
return status;
} finally {
// Clean up JDBC objects
close(myConn, myStmt, null);
}
}