第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Java中,try,catch,return最終如何返回工作?

在Java中,try,catch,return最終如何返回工作?

明月笑刀無情 2021-03-30 12:12:17
我不能確切地了解如何return在工作try,catch。如果我有try和finally沒有catch,我可以把return里面try塊。如果我有try,catch,finally,我不能忍受return的try塊。如果我有一個catch塊,我必須把return在外面try,catch,finally塊。如果刪除catch塊和throw Exception,則可以將其return放入try塊內(nèi)。它們究竟如何工作?為什么我不能把它return放在try塊里?代碼try,catch,finallypublic 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; }帶有的代碼try,finally不帶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);     } }
查看完整描述

3 回答

?
皈依舞

TA貢獻1851條經(jīng)驗 獲得超3個贊

是的,令人困惑。


在Java中,非函數(shù)的所有程序控制路徑都必須以結(jié)束,否則將引發(fā)異常。這就是簡單而明確的規(guī)則。voidreturn


但是,令人討厭的是,Java允許您在一個塊中添加一個多余 return的東西finally,它會覆蓋以前遇到的任何東西return:


try {

    return foo; // This is evaluated...

} finally {

    return bar; // ...and so is this one, and the previous `return` is discarded

}


查看完整回答
反對 回復(fù) 2021-04-28
?
慕運維8079593

TA貢獻1876條經(jīng)驗 獲得超5個贊

如果我嘗試了,那就趕上了,最后我不能在try塊中放入return。


你絕對可以。您只需要確保方法中的每個控制路徑都正確終止即可。我的意思是:方法中的每個執(zhí)行路徑都以return或結(jié)尾throw。


例如,以下工作:


int foo() throws Exception { … }


int bar() throws Exception {

    try {

        final int i = foo();

        return i;

    } catch (Exception e) {

        System.out.println(e);

        throw e;

    } finally {

        System.out.println("finally");

    }

}

在這里,您有兩種可能的執(zhí)行路徑:

  1. final int i = foo()

  2. 任何一個

    1. System.out.println("finally")

    2. return i

  3. 或者

    1. System.out.println(e)

    2. System.out.println("finally")

    3. throw e

如果沒有拋出異常,則采用路徑(1,2)foo。如果引發(fā)異常,則采用路徑(1,3)。請注意,在兩種情況下,如何在離開該方法之前finally執(zhí)行該塊。


查看完整回答
反對 回復(fù) 2021-04-28
?
嗶嗶one

TA貢獻1854條經(jīng)驗 獲得超8個贊

最后塊將始終執(zhí)行即使我們陷入異常catch塊,甚至我們的try塊按預(yù)期執(zhí)行。


因此,何時finally塊將在流程中執(zhí)行...


如果我們在try / catch塊中有return語句,那么在執(zhí)行return語句之前,將執(zhí)行finally塊(就像關(guān)閉連接或I / O一樣)


function returnType process() {

  try {

      // some other statements

      // before returning someValue, finally block will be executed

      return someValue;

  } catch(Exception ex) {

     // some error logger statements

     // before returning someError, finally block will be executed

     return someError;

  } finally {

    // some connection/IO closing statements

    // if we have return inside the finally block

    // then it will override the return statement of try/catch block

    return overrideTryCatchValue;

  }

}

但是,如果您在finally語句中包含return語句,則它將覆蓋try或catch塊中的return語句。


查看完整回答
反對 回復(fù) 2021-04-28
  • 3 回答
  • 0 關(guān)注
  • 344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號