iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
Software Development

Java基礎筆記系列 第 23

Java的final家族及throw和throws

  • 分享至 

  • xImage
  •  

一開文章看到官方貼心提醒「好可惜在第 22 天中斷比賽了,邀請您繼續寫完30篇鐵人文」,
發生了中斷意外......難道是前一天寫完例外機制的魔咒嗎/images/emoticon/emoticon20.gif
昨天開始進入專題製作,一直在研究JDBC撰寫方式,腦袋整個將鐵人賽忘記(藉口XD?),不過話雖如此,還是會乖乖把這三十天文章寫完,也算對自己的一個交代!

----前言結束----

在Java中,final、finally和finalize,以及throw、throws系列都是關鍵字,具有不同功能與用途。

final家族

  • final
    若變數加上final,代表其值就不能被修改,相當於常數。
final int CONSTANT = 100;

若方法加上final,代表它不能在子類別中被覆寫。

final void display() {
    System.out.println("This method can't be overridden");
}

若類別加上final,代表它不能被繼承。

final class FinalClass {}

將方法跟類別宣告為final不讓人隨意修改,最常見的例子就是java.lang其中的內容。

  • finally
    出現在異常處理中,屬於try-catch例外處理的一部份,加於catch的最後,無論是否發生異常,最後都會處理finally區塊內的程式碼。常用於關閉資料庫連結等釋放資源作用。
    不過要注意,若程式未處在運行階段,例如使用System.exit(),那麼finally就不會被執行。
try {
    // 可能發生例外的程式碼
} catch (Exception e) {
    // 發生例外的處理方式
} finally {
    // 運行完最後要處理的程式碼
}

Java7之後有更簡潔的try-with-resource寫法。

try (ResourceType resource = new ResourceType()) {
    // 使用資源的程式碼
} catch (Exception e) {
    // 處理發生的例外
}
  • finalize()
    屬於java.lang.Object其中一個方法,當系統的垃圾回收器決定回收某對象時,會先調用該對象的finalize()方法,有機會清理資源,這清理的時間不一定,也可能導致資源洩漏,故Java9開始,已被標示為過時建議不使用。
@Deprecated
protected void finalize() throws Throwable {
    // 要被清理的資源
}

throw 和 throws

  • throw
    是在方法當中明確拋出異常,由程式設計者自行手動設計丟出,並new一個例外。
if (value < 0) {
    throw new ArgumentException("Value不能小於0");
}
  • throws
    是在宣告方法時,說明可能會有哪些異常,若後續有人使用此方法,就必須自行處理此異常,或再宣告拋出。
public class ThrowsDemo { 
    public static void main(String[] args) { 
        //.....
        } 
    }

上一篇
Java的例外機制Exception
下一篇
Java 多執行緒Thread vs. Runnable
系列文
Java基礎筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言