你過於擔心RuntimeException了嗎?

來源:互聯網
上載者:User

RumtimeException是一種UncheckedException。

UncheckException是一種不需要在方法簽名中聲明的異常類型。廣為知道的RuntimeException的子類有NullPointerException,StringOutOfBoundsException。ArrayIndexOutOfBoundsException之類的。在代碼啟動並執行過程中由於變數為空白或者數組越界等情況就會發生這種異常。當異常發生的時候,由於沒有try-catch會產生程式意外退出的情況。為了避免發生這種異常而導致應用程式意外退出,需要對代碼進行try-catch或者是在調用前進行非空判定或者是長度判定。

常見的情況如下:

下面是關於非空判定的例子

1 User user = getUser(userId);2 if (user != null) {3     System.out.println(user.getName());4 }

下面是關於數組越界的判定

1 String[] codes;2 3 public String getNextCode(int index) {4     if ((index++) > codes.size()) {5         index = 0;6     }7     return codes[index];8 }

NullPointerException的規避方法,之前的例子已經講過了NullObjectPattern。

而數組越界則可以通過下列方法來判定

1 String[] codes;2 3 public String getNextCode(int index) {4     return codes[(index ++) % codes.size()];5 }

如果你在開發的是一個Web應用程式,你應該準備一個出錯頁面,並且在出現Exception的時候將頁面定向轉到該頁面去。

如果你在開發的是一個C/S應用程式,或者是StandAlone的應用程式,你應該準備一個出錯對話方塊,並且在發生問題的時候提示使用者具體出現的錯誤。

如果在開發一個Android應用程式,你應該忽略發生的問題,因為Android系統會抓住相關的錯誤,並且出現一個對話方塊提示系統出現錯誤,並且會根據情況自動回復應用程式的運行。(如果應用程式是Home,IME等需要常駐記憶體的程式)

更為重要的是相關的Exception是怎麼發生的,怎麼才能夠規避。發生Exception應該記錄相關Log,通過相關Log找到相關Exception發生的原因,這樣就可以從根本上去消除問題。

規避類似問題的方法最好的方法是讓問題永遠不會發生。

1. NullObjectPattern

2. 數組下標通過計算使之不越界。

3. 對數組遍曆時盡量避免採用下標。(會有效能問題...)

 

Java語言中的UncaughtException並不能夠協助把未抓到的Exception抓到後進行合適的處理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.