方法通過異常與返回值達到雙型別返回值效果

2021-08-07 07:20:22 字數 857 閱讀 2472

在寫方法的時候我們很多時候會碰到這種情況:

情況一 的時候我們要返回物件,

情況二的時候我們想返回字串甚至另乙個物件了,

但是返回值型別設定成物件了,這時候我們怎麼處理呢;

那麼現在我們就可以用到異常了

public user getuser(string id) throws exceptionelse 

}public void test()catch (exception e)

}

上述**中返回值為 user, 但是 如果user不存在的話需要返回字串,這種情況 就要把字串通過異常丟擲去, 然後在呼叫方法的時候進行異常的處理, 從而獲取所需要的資料;

拋異常不僅限於字串還有很多態別的都可以,我想要用異常拋乙個物件回去的話,我可以用gson把物件轉換成json,然後當字串傳給exception, 丟擲去,回頭直接獲取,再轉回物件就行了;

當然用exception只是為了簡單,在正常開發中有什麼特殊需求的話,需要自己自定義異常類進行處理相關資料,

異常裡邊可以傳乙個引數也可以兩個也可以三個;

有些有特殊需求的異常也用到collection;

/**

* */

package chengzi;

/** * @author chengzi

* */

public class test catch (exception e) }

public string getuser(string id) throws exception

if(user == null)else

}}

方法引數型別以及返回值

乙個方法的形參要乙個類 型別,就傳乙個該類的物件 public class mytest public static void set student student,int num class student 輸出結果 2乙個方法的形參要乙個抽象類 型別,傳乙個該抽象類的子類物件 public c...

關於函式的返回值與返回型別

返回型別只是決定分一塊什麼型別的記憶體來儲存該返回值。返回值不管是不是外部傳入還是內部定義,只要不是返回引用,在函式執行到 時會拷貝生成乙份匿名物件到外部函式棧。同樣的,形參只要不是引用型別,傳入引數也會執行一次拷貝,該拷貝從外部函式棧,拷貝到被呼叫函式棧。vs編譯器會做一些優化,減少拷貝次數。直接...

方法引數型別以及返回值型別問題

1.類名作為形式引數 返回值型別 類名作為形式引數,即乙個方法的形參要的是類型別,就傳類的乙個物件 extends 類名作為返回值,即乙個方法的返回值要的是類型別,就返回類的乙個物件。2.抽象名作為形式引數 返回值型別 抽象名作為形式引數,即乙個方法的形參要的是抽象類型別,就傳該抽象類的子類的乙個物...