簡體   English   中英

空或拋出異常

[英]Null or throw exception

public class Learner {
    public static void main(String[] args) {
        String[] dataArr = new String[4];
        dataArr[1] = "Bill";
        dataArr[2] = "Steve";
        dataArr[3] = "Larry";
        try{
            for(String data : dataArr){
                System.out.print(data+" ");
            }
        }catch(Exception e){
            System.out.println(e.getClass());
        }
    }
}

這本書說這將打印:null Bill Steve Larry

這讓我感到困惑,因為我認為使用null訪問任何數據都會引發NullPointerException。 是否曾經有一次在訪問具有空值的數組時引發異常?

還是system.out.println()節省了寬限期? 您是否可以通過for循環訪問任何空值,只要您不說在其上調用data.length()?

當操作數為空引用時,在JLS中將字符串串聯定義為安全操作,即,它不會引發任何異常(如果嘗試使用.toString()來描述對象,則為這種情況)和文本"null"必須使用"null"代替。

需要拆箱時運行安全檢查:

Integer val = null;
int err = val + 1; // throws NPE

只是出於好奇,訪問空引用上的任何靜態方法甚至不需要檢查,因為綁定發生在編譯時:

public class NullRefStatic {

    public static void test() { // <-- static method
        System.out.println("It works");
    }

    public static void main(String... args) {
        NullRefStatic target = null;
        target.test(); // <-- Prints "It works"
    }
}

因此,它正在打印出對象的值,在這種情況下將為null。

如果您嘗試使用它的函數或訪問任何屬性,則會發生空指針異常,因為這些屬性尚不存在,因此會出現空指針異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM