鍍金池/ 問答/Java  C++  網(wǎng)絡(luò)安全/ #討論# 為什么java要設(shè)計(jì)成有NullPointerException(空指

#討論# 為什么java要設(shè)計(jì)成有NullPointerException(空指針)的概念?

java8的Optional并沒有讓程序變得簡(jiǎn)潔,所以不說他了好吧,謝謝

看了下面這個(gè)問題,我覺得這么設(shè)計(jì)就很好

Java里面null.method()可以設(shè)計(jì)為返回null嗎?

現(xiàn)在java的版本是 每次調(diào)用null的方法之后都會(huì)拋出一個(gè)NullPointerException的異常,

我就覺得java不應(yīng)該這么設(shè)計(jì),

因?yàn)檫@么設(shè)計(jì)會(huì)帶來代碼量的超大量增加,如果我想保證程序中不存在空指針的問題,就需要每一次方法調(diào)用前,都進(jìn)行非空判斷!

否則,無論你的程序?qū)懙亩嗤晟?,都避免不了空指針的問題!

我之所以敢這么說是因?yàn)?,之前聽阿里的人說過,"無論你的程序?qū)懙亩嗤晟?,都避免不了空指針的問題!",還有外加自己這幾年開發(fā)的經(jīng)驗(yàn),大家也可以想一下,這么多年,我們認(rèn)真開發(fā),認(rèn)真思考,盡量思考全面,可是誰沒碰到過NullPointerException,這就說明人不可能面面俱到,我們都是按照正常邏輯開發(fā)的,誰也不能寫一行代碼想100中可能,

開發(fā)中,數(shù)據(jù)庫突然被人清空一列,誰敢保證自己的程序不報(bào)空指針?

這種情況下我們的程序就異常了,無法向下執(zhí)行了,這是不能被我接受的,我認(rèn)為如果出現(xiàn)了數(shù)據(jù)庫被清空的問題,你只要在返回給我的結(jié)果里告訴我,這列為null,就行了,干嘛要讓我的整個(gè)程序都執(zhí)行異常?

很多時(shí)候,我們是可以接受數(shù)據(jù)庫有些字段有時(shí)候是null,有時(shí)候有值的。

如果有時(shí)候你不能接受結(jié)果為null,卻得到了Null的結(jié)果,這很明顯是程序里發(fā)生了問題,應(yīng)該去debug查找問題;

我認(rèn)為,這是程序員的工作,而不該是java語言的工作,

java現(xiàn)在把所有對(duì)null方法的調(diào)用都報(bào)了異常,就是等于幫程序員調(diào)了bug,但是造成了大量本可以避免的代碼的增加

回答
編輯回答
淚染裳

java方言了解一下

2018年6月18日 06:55
編輯回答
巴扎嘿

如果不報(bào)異常,可能你(程序員)就無法發(fā)現(xiàn)你的程序中存在的問題,因?yàn)槿硕际菓卸璧?,如果不?bào)異常,估計(jì)很少有人會(huì)去判斷或catch空指針,這就很可能會(huì)導(dǎo)致一個(gè)結(jié)果:你的程序中已經(jīng)出現(xiàn)很大的問題了,但是你卻感知不到。

但是從用戶的角度來看,他們卻可以感覺到很多這類問題:本該顯示價(jià)格的地方卻什么都沒有顯示、本該進(jìn)行到下一步流程的但是什么都沒有發(fā)生,也沒有報(bào)錯(cuò)、等等諸如此類問題……

2018年1月2日 06:43
編輯回答
有點(diǎn)壞

據(jù)樓上討論:
你這樣的態(tài)度只是你個(gè)人的態(tài)度,企業(yè)則需要穩(wěn)如狗,如果是阿里這樣的大企業(yè),一個(gè)空指針能追蹤多少臺(tái)服務(wù)器.
所以按你的想法來弄java,java就成不了企業(yè)級(jí)的開發(fā)語言.基本只能自娛自樂

2018年3月8日 16:20