java 判断对象是否为空 防止出现NullPointerException异常
java语言与其他编程语言不同,它有严格的异常处理机制,如果需要抛出异常的代码块中没有捕获异常,程序将不会成功编译,换言之:未使用异常捕获、异常捕获方式不正确等,都将导致代码不能被jvm编译。java标准库,内建了大量的异常处理类,这些类以Throwable 设计为最顶层类。常见的java异常类有:IOException, SocketTimeoutException, UnknownHostException, MalformedURLException、NullPointerException等。
异常的机构

java怎么处理异常?
try{
//可能出现异常的代码块
} catch (Exception e) { //出现指定的异常时会进入该代码块。
//捕获到异常后处理异常的代码块
} finally { //可选
//不管是否触发了异常,都将被执行
}
让人头痛的NullPointerException(空指针异常)
什么时候出现NullPointerException?从上面的java异常结构可以看出NullPointerExcetion继续自RuntimeException,即表示这是一种运行时才会触发的异常。当程序运行时,对象未初始化或为空时,NullPointerException就出现了,写Java程序时要特别注意这个异常,该异常不捕获,直接导致整个程序崩溃。因此,我们要很小心,在对象可能为空的情况下,要积极做null检查,不然,NullPointerException就在那等着我们了。
如何防范NullPointerException?
java是纯粹面向对象的编程语言,一切都是对象。对象就有方法和属性,在为空的对象中调用方法就会出现NullPointerException,一个很简单的例子:
public String getName(Cat c){
return c.name;
}
这段代码用来获取猫(Cat)对象:c的姓名,这里的c为null时,100%会出现空指针错误了。保险的作法是在使用name获取值前先检查u是否为空?
改一下:
public String getName(Cat c){
if( c == null ){
return "is null";
}
return c.name;
}
这样就不会导致出现空指针异常了,一个经验,对于那些可能为空的对象进行操作时,一定要检查是否为空,可避免空指针异常。java 空指针错误几乎每个人都栽过,至少我就曾在这上面吃了不少苦,写过一个网络程序,是获取网页的,大概在进行了3个小时时,程序崩溃了,多处出现了NullPointerException,后来在一段摸索后,对可能出现该异常的地方进行异常捕获,之后就正常了。java 官方也知道这个问题,于是在java 8 中引入了 OPtional 类,专门用来解决null的安全问题,上面的代码用Optional改写成:
public static String getName(Cat s){
Optional<Cat> cat = Optional.ofNullable(s);
if(!cat.isPresent()){
return "is Null";
}
return cat.get().name;
}
代码依然这么多,Optional可以有更简洁的写法,来试一下:
public static String getName(Cat s){
return Optional.ofNullable(s).map(sl->sl.name).orElse("is Null");
}
这才是Optional的本意,简洁易懂,链式操作,用Optional避免了if判断,简洁了不少。
- php自己动手实现max,找出数组中最大的值
- windows 10 安装软件时出现740 createProcess错误解决办法
- electron 报错 Error: Electron failed to install correctly, please delete node_modulees/electron and try installing again
- 网址链接有效性批量检测工具2.1
- 宇秀搜索引擎下拉及相关搜索推荐营销系统6.0-精确定制每个词:万能key标签【功能添加】
- windows 操作系统实现快速宽带拨号命令[批处理下载]
- 宇秀下拉 2021-2-16下拉更新案例
- 让 WordPress 只搜索文章的标题
- 苦恼,单位聚餐非要喝酒,喝你妹喝
- 百度搜索推出惊雷算法 严厉打击刷点击作弊行为



QQ
微信
商店