java中try-catch语句中的返回
在这个方法中,哪里可以使用return语句?终于进去了?还是试试 返回try-catch语句中的字符串有点困惑java中try-catch语句中的返回,java,return,try-catch,finally,Java,Return,Try Catch,Finally,在这个方法中,哪里可以使用return语句?终于进去了?还是试试 返回try-catch语句中的字符串有点困惑 public List<String> getEmailAddr(String strAccountnbr, String strCode) throws Exception { String strQuery2 = null; ResultSet rs = null; PreparedStatement ps = null
public List<String> getEmailAddr(String strAccountnbr, String strCode) throws Exception {
String strQuery2 = null;
ResultSet rs = null;
PreparedStatement ps = null;
List<String> emailAddress= new ArrayList<String>();
try{
strQuery2 = "SELECT c.EmailAddress AS EmailAddress" +
" FROM customeremailid c " +
" WHERE c.AccountNbr = ? " +
" AND c.Code = ? ";
logMsg("strQuery2: "+strQuery2);
ps = getDBConn().prepareStatement(strQuery2);
ps.setString(1, strAccountnbr);
ps.setString(2, strCode);
rs = ps.executeQuery();
while(rs.next())
{
emailAddress.add((rs.getString("EmailAddress")));
}
}
catch(Exception e)
{
//some error especify your exception or uses a generic..
throw new EmailAdressException("BLA BLA BLA...")
}
//if everything is fine return email
return emailAddress;
}
这是我的密码
public List<String> getEmailAddr(String strAccountnbr, String strCode) throws Exception {
String strQuery2 = null;
ResultSet rs = null;
PreparedStatement ps = null;
try
{
List<String> emailAddress= new ArrayList<String>();
strQuery2 = "SELECT c.EmailAddress AS EmailAddress" +
" FROM customeremailid c " +
"WHERE c.AccountNbr = ? " +
"AND c.Code = ? ";
logMsg("strQuery2: "+strQuery2);
ps = getDBConn().prepareStatement(strQuery2);
ps.setString(1, strAccountnbr);
ps.setString(2, strCode);
rs = ps.executeQuery();
while(rs.next())
{
emailAddress.add((rs.getString("EmailAddress")));
}
}
catch(Exception e)
{
e.printStackTrace();
}
return emailAddress;
}
public List getEmailAddr(String strAccountnbr,String strCode)引发异常{
字符串strQuery2=null;
结果集rs=null;
PreparedStatement ps=null;
尝试
{
List emailAddress=new ArrayList();
strQuery2=“选择c.EmailAddress作为EmailAddress”+
“来自customeremailid c”+
“其中c.AccountNbr=?”+
“和c.代码=?”;
logMsg(“strQuery2:+strQuery2”);
ps=getDBConn().prepareStatement(strQuery2);
ps.setString(1,strAccountnbr);
ps.setString(2,strCode);
rs=ps.executeQuery();
while(rs.next())
{
emailAddress.add((rs.getString(“emailAddress”));
}
}
捕获(例外e)
{
e、 printStackTrace();
}
返回电子邮件地址;
}
我收到错误,因为无法将电子邮件地址解析为变量。
有什么帮助吗
我收到错误,因为电子邮件地址
无法解析为变量。任何
帮忙
现在,您的电子邮件地址只能在try{//Block}
中访问,而不能在catch{//Block}
中将代码更改为
List<String> emailAddress= new ArrayList<String>();
try
{
....
}
return emailAddress;
List emailAddress=new ArrayList();
尝试
{
....
}
返回电子邮件地址;
以前,您尝试返回的变量仅限于try块范围。return
可以在try
块内部或try-catch
块外部使用,最后
块基本上是用于放弃资源,而不是用于编写返回语句。公共列表getEmailAddr(字符串strAccountnbr,字符串strCode)引发异常{
public List<String> getEmailAddr(String strAccountnbr, String strCode) throws Exception {
String strQuery2 = null;
ResultSet rs = null;
PreparedStatement ps = null;
List<String> emailAddress= new ArrayList<String>();
try{
strQuery2 = "SELECT c.EmailAddress AS EmailAddress" +
" FROM customeremailid c " +
" WHERE c.AccountNbr = ? " +
" AND c.Code = ? ";
logMsg("strQuery2: "+strQuery2);
ps = getDBConn().prepareStatement(strQuery2);
ps.setString(1, strAccountnbr);
ps.setString(2, strCode);
rs = ps.executeQuery();
while(rs.next())
{
emailAddress.add((rs.getString("EmailAddress")));
}
}
catch(Exception e)
{
//some error especify your exception or uses a generic..
throw new EmailAdressException("BLA BLA BLA...")
}
//if everything is fine return email
return emailAddress;
}
字符串strQuery2=null;
结果集rs=null;
PreparedStatement ps=null;
List emailAddress=new ArrayList();
试一试{
strQuery2=“选择c.EmailAddress作为EmailAddress”+
“来自customeremailid c”+
“其中c.AccountNbr=?”+
“和c.代码=?”;
logMsg(“strQuery2:+strQuery2”);
ps=getDBConn().prepareStatement(strQuery2);
ps.setString(1,strAccountnbr);
ps.setString(2,strCode);
rs=ps.executeQuery();
while(rs.next())
{
emailAddress.add((rs.getString(“emailAddress”));
}
}
捕获(例外e)
{
//某些错误指定了您的异常或使用了泛型。。
抛出新的EmailAddressException(“BLA-BLA-BLA…”)
}
//如果一切正常,请回复电子邮件
返回电子邮件地址;
}
在代码中,当你在一个块中声明你的电子邮件地址(尝试块)时,EMAIL地址只在该块内可用。这里的catch catch在处理查询时仅用于处理可能的异常。尝试将TestCcatch限制为只会引发异常的代码。(在这种情况下,您可以/应该重构您的代码,以便使用自己的方法完成查询)
如果在try-catch块之外声明emailAddress,则在catch块之后返回它
public List<String> getEmailAddr(String strAccountnbr, String strCode) throws Exception {
List<String> emailAddress= new ArrayList<String>();
try {
// Handle query here
} catch(Exception e) {
// You should not catch Exception, but a more fine-grained exception.
// In this case, SQLException
}
return emailAddress;
}
public List getEmailAddr(String strAccountnbr,String strCode)引发异常{
List emailAddress=new ArrayList();
试一试{
//在这里处理查询
}捕获(例外e){
//您不应该捕获异常,而是更细粒度的异常。
//在本例中,SQLException
}
返回电子邮件地址;
}
当然不在finally
块内。不,这不是真的。您可以将此try-catch限制为仅处理可能的查询异常,然后处理其余代码(包括返回语句)在try/catch之外。@Handsomeguy如果我没弄错,你的意思是说没有必要写最后
块吗?不,不正确的是“Return必须始终在try块内部使用”@Handsomeguy删除了不明确的部分,因为还有另一行“或可在try catch
块外部使用。我在块外部声明。如果没有电子邮件地址,我是否会在catch中获得异常?@user3152748您将获得null指针,但如果您获得任何异常,您可以在catch块中返回null或特定错误消息。这是您的赌注!!!:)
public List<String> getEmailAddr(String strAccountnbr, String strCode) throws Exception {
List<String> emailAddress= new ArrayList<String>();
try {
// Handle query here
} catch(Exception e) {
// You should not catch Exception, but a more fine-grained exception.
// In this case, SQLException
}
return emailAddress;
}