我有此線的代碼:java。方法返回空。我必須生成什麼異常?
String name = Book.getName();
/*next lines of code*/
接着,可變name
處理在其他代碼而沒有任何檢查。 在某些情況下,可能的情況下,name=null
和其他代碼將退出並出現錯誤。
這是不好的。
此外,我無法訪問其他代碼。
所以,你怎麼想,我的下一個實現是正確:
try
{
String name = Book.getName();
if(null== name)
throw new NullPointerException("method 'getName' return null");
/*next lines of code*/
}
catch(NullPointerException e)
{
System.out.print("Hey! Where book name? I exit!");
System.exit();
}
我在這種情況下,任何其他選擇呢?
有可能生成任何其他類型的Exception
或只有NullPointerException
?
謝謝。
編輯:
好吧,
String name = Book.getName();
它想象代碼行。在實際情況中,我有更復雜的代碼:
List<Book> bookList= new ArrayList<Book>();
String name = null;
Iterator i = BookShop.getBooks.iterator(); //BookShop it is input parameter!
while(i.hasNext())
{
Book book = (Book) i.next;
name = book.getName();
nameList.add(name);
}
這個例子比較滿。
因此,在此代碼輸入參數BookShop
對象。
我可以用這個對象有什麼問題?
- 書店可以是
NULL
; - 方法
BookShop.getBooks()
可返回NULL
;
另外,getName()
也可以返回NULL
。
所以,一般問題下:不能保證輸入參數BookShop的正確性!
,我必須要考慮每一個可能的選項(3 NULL
)
對於我來說,加總try-catch
塊和所有。
不是?
+1「嘿凡書名我退出!?!」 – 2012-02-28 15:55:02
也許最好的方法是不讓方法返回null。爲什麼書店會有空的書而不是空(一套空的)書?然後,如果返回null,您可以高興地隱含NPE。 – 2012-02-28 16:57:19