麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > JDBC操作時(shí)竟然NullPointerException!看我怎么一招搞定它

JDBC操作時(shí)竟然NullPointerException!看我怎么一招搞定它

來源:千鋒教育
發(fā)布人:syq
時(shí)間: 2022-09-20 10:25:14 1663640714

  一. 前言

  每一個(gè)程序猿在曲迂奮進(jìn)的成神路上,都會(huì)遇到一些大大小小的妖魔和臭蟲阻礙,可以說這些bug會(huì)伴隨著我們整個(gè)的職業(yè)生涯。想當(dāng)年小編也是經(jīng)歷了無數(shù)次的痛苦撓頭,數(shù)不清的排錯(cuò)與實(shí)驗(yàn),丟掉了不知道多少根頭發(fā),最后才以”半禿之身“成就了今天的自己。所謂"不經(jīng)風(fēng)雨,怎能見彩虹!不見bug,怎能成神",正是如此。

NullPointerException

  今天小編就用自己十幾年的功力,來教大家如何解決我們開發(fā)路上遇到的常見bug。

  遇見bug,淡定莫慌!小編告訴你,心平氣和地對(duì)待bug,去分析,去排錯(cuò)!

  二. NullPointerException異常

  為了更好的教會(huì)大家如何解決異常,今天小編就用一個(gè)Java開發(fā)時(shí)最常見的空指針異常來進(jìn)行演示,我們一起來看看NPE異常的解決過程。如下圖所示:

15 (1)

  在這里給大家準(zhǔn)備了一個(gè)經(jīng)典的NPE空指針異常。當(dāng)出現(xiàn)上面問題的時(shí)候,有很多小白都會(huì)不知所措,遇到問題完全沒有頭緒,抓耳撓腮的就是不知道如何下手解決。也有一些稍微表現(xiàn)好點(diǎn)的同學(xué),會(huì)在第一時(shí)間進(jìn)行百度,或者是問老師,問其他同學(xué),最后會(huì)知道自己遇到了大名鼎鼎的空指針異常,但至于為什么出現(xiàn)這個(gè)異常,則又完全沒有了頭緒。小編作為一個(gè)過來人,對(duì)小白的這些表現(xiàn)其實(shí)是感同身受的。

  今天就那么以NPE為例,帶著大家層層分析,一點(diǎn)點(diǎn)教會(huì)你如何解決異常。

  三. 異常分析

  1.NullPointerException

  首先我們要搞清楚,自己遇到的異常到底是什么?就比如我們今天所說的空指針,到底是怎么回事呢?

  java.lang.NullPointerException:空指針異常,是指我們?cè)诖a中調(diào)用某個(gè)類對(duì)象時(shí),結(jié)果在代碼執(zhí)行期間JVM虛擬機(jī)發(fā)現(xiàn)該對(duì)象沒有賦值,即值為null,此時(shí)就會(huì)出現(xiàn)NullPointerException異常。

  2.一個(gè)案例

  我們可以來看看給大家設(shè)計(jì)的下面這個(gè)案例。

  2.1 測(cè)試接口

  在下面的代碼中,我們會(huì)通過JDBC的方式,將數(shù)據(jù)庫表中的所有員工信息查詢并封裝到List集合中,并使用單元測(cè)試來測(cè)試接口功能。代碼如下:

16 (1)

  2.2 查詢功能

  上面的代碼執(zhí)行之后,我們會(huì)在控制臺(tái)的異常信息中發(fā)現(xiàn),在第29行碼"com.qf.test.TestEmployee.testFindAllEmp(TestEmployee.java:29)"中出現(xiàn)了空指針問題。如果我們仔細(xì)觀察,會(huì)發(fā)現(xiàn)第29行代碼,又在調(diào)用第42行代碼:"com.qf.dao.impl.EmpDaoImpl.findAllEmp(EmpDaoImpl.java:42)"。我們繼續(xù)閱讀第42行代碼,如下圖所示:

b27bdee0-013f-451f-b9c6-2370eab4fb2f_output

18 (1)

  該方法的邏輯是要將查詢到的多條記錄都封裝到List集合中,而List集合里添加的是員工對(duì)象,我們上面代碼的錯(cuò)誤提示的就是出現(xiàn)在這個(gè)方法中的第42行。而42行剛好就是我們從數(shù)據(jù)庫中得到每一行每一列的字段信息。

  細(xì)心的同學(xué)會(huì)看到,我們上面的Emp emp = null ; 這里只是聲明了Emp對(duì)象,但并沒new。我們每循環(huán)一次就表示會(huì)封裝一個(gè)員工信息到集合中,但卻沒有給emp對(duì)象賦值,所以此時(shí)emp對(duì)象就是null。

  這樣經(jīng)過層層摸排,我們就知道了產(chǎn)生空指針的真正原因所在,是因?yàn)槲覀儧]有給某個(gè)對(duì)象賦值!那么該問題怎么解決呢?

  四. 解決辦法

  通過上面的代碼分析,我們發(fā)現(xiàn)出現(xiàn)NullPointerException異常的原因,是因?yàn)槲覀冊(cè)诮涌趯?shí)現(xiàn)類中沒有給Emp對(duì)象賦值,導(dǎo)致emp對(duì)象為null。當(dāng)我們使用null去調(diào)用對(duì)應(yīng)的方法來封裝數(shù)據(jù)時(shí),就會(huì)出現(xiàn)空指針異常。其實(shí)空指針異常解決起來也比較簡單,我們只需要在第42行代碼前面加入如下操作:

19

  上面的代碼,我們只是增加了給emp對(duì)象賦值的過程!這樣就解決了空指針異常。

  五. 總結(jié)與反思

  很多初學(xué)者在剛開始學(xué)習(xí)時(shí),有時(shí)候一個(gè)變量定義錯(cuò)了,或者是為了給變量賦值,都可能會(huì)引發(fā)一系列錯(cuò)誤。一旦出現(xiàn)錯(cuò)誤,很多初學(xué)者往往要花費(fèi)幾十分鐘甚至幾個(gè)小時(shí)的時(shí)間去排查故障,甚至還有一些同學(xué)最后也搞不定這些錯(cuò)誤,嚴(yán)重地挫傷了學(xué)習(xí)的積極性。

  其實(shí)初學(xué)者遇到的絕大多數(shù)問題,都是因?yàn)榇中拇笠庠斐傻摹N覀円院笤趯懘a時(shí),不要去求快,而是要求穩(wěn),每一行代碼都要認(rèn)真思考琢磨,用心去打磨自己的項(xiàng)目,這正應(yīng)了我們的一句老話:”磨刀不誤砍柴工“。

  今天的NullPointerException異常解決過程,給了我們初學(xué)者一個(gè)警醒,寫完業(yè)務(wù)代碼后,一定要再梳理一遍業(yè)務(wù)流程,盡量要做到以下幾點(diǎn):

  編寫業(yè)務(wù)方法之后,根據(jù)業(yè)務(wù)需求自己再梳理一遍業(yè)務(wù)的實(shí)現(xiàn)過程;

  如果出現(xiàn)了問題,可以打斷點(diǎn)一步步往下調(diào)試,并結(jié)合簡單的輸出語句驗(yàn)證輸出結(jié)果;

  只要你能夠按照小編的流程走,你會(huì)發(fā)現(xiàn)原來bug也沒有那么可怕。現(xiàn)在你知道異常該怎么解決了嗎?

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
Visual Studio Online和GitHub有什么區(qū)別?

1.定位不同Visual Studio Online,現(xiàn)更名為Visual Studio Codespaces,是微軟提供的一款在線開發(fā)環(huán)境,允許開發(fā)者在云端進(jìn)行編程和調(diào)試工作。而...詳情>>

2023-10-15 00:21:42
什么是域控制器?

一、域控制器的定義域控制器是指在Windows Server操作系統(tǒng)中部署Active Directory服務(wù)的服務(wù)器。Active Directory是微軟公司開發(fā)的目錄服務(wù),用...詳情>>

2023-10-15 00:10:28
深度學(xué)習(xí)模型權(quán)重h5、weights、ckpt、pth有什么區(qū)別?

1.來源框架不同h5格式通常用于Keras和TensorFlow框架,weights用于Darknet框架,ckpt是TensorFlow框架的一種格式,而pth則主要用于PyTorch框架...詳情>>

2023-10-15 00:05:17
大數(shù)據(jù)測(cè)試工程師需要具備哪些技能?

一、理解大數(shù)據(jù)概念大數(shù)據(jù)測(cè)試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲(chǔ)、MapReduce、實(shí)時(shí)計(jì)算等。他們還需要了解如何處理大規(guī)模的...詳情>>

2023-10-14 23:43:03
為什么SpringBoot的 jar 可以直接運(yùn)行?

一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項(xiàng)目的類文件、資源文件以及依賴庫等...詳情>>

2023-10-14 23:01:49
快速通道
主站蜘蛛池模板: 啊轻点灬大ji巴太粗小说太男| 看黄a大片免费| 91精品国产高清久久久久久io| 窈窕淑女韩国在线看| 九九久久99综合一区二区| 果冻传媒和精东影业在线观看| 妖精的尾巴ova| 欧美黑人xxxx| 久久精品国产亚洲精品2020| 在线日韩欧美| 秋霞影院国产| 一本久久a久久精品亚洲| 一级艳片加勒比女海盗1| 一区在线免费| 国产一级电影在线观看| 一区二区3区免费视频| 美女扒了内裤让男人桶爽视频| 蜜柚最新在线观看| 毛片大全免费| 极品校花yin乱合集| 精品久久久久久国产| 色人格第四色| 特黄特色大片免费播放路01| 亚洲冬月枫中文字幕在线看| t66y最新地址一地址二地址三| 特黄a级毛片| 在线观看中文字幕码2023| 免费a级毛片无码| 杨幂精品国产福利在线| 久久久久无码国产精品一区| 天堂在线影院| 女人18毛片a级毛片免费视频| 四虎成人精品在永久免费| 好吊日在线观看| 国产一区二区三区在线观看免费| 鲁啊鲁在线观看| 久久精品国产大片免费观看| 久草国产电影| 北条麻妃中文字幕在线观看| 大象传媒在线观看| 国产热热|