我有这行代码:
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
对象。
这个对象有什么问题?
- BookShop 可以是
NULL
; - 方法
BookShop.getBooks()
可以返回NULL
;
此外,getName()
也可以返回 NULL
。
那么,接下来的普遍问题:不能保证输入参数BookShop的正确性!
而且我必须考虑每一个可能的选项 (3 NULL
)
对我来说,添加通用 try-catch
block 就可以了。
没有?
最佳答案
您可以通过扩展 Exception 创建任何您喜欢的异常类,例如 NoNameProvidedException
。 Google 有很多示例可以帮助您做到这一点。
我想在您的情况下,如果 name
是 null
,只需检查 if
就足够了,因为您只想执行 System.exit()
.
关于 java 。方法返回 Null。我必须生成什么异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9485120/