1. 前言
剛開始學習Java語言的小伙伴, 很可能被各種各樣的程序bug搞得焦頭爛額, 甚至被勸退。別怕,健哥將手把手帶你了解Java中的異常體系, 如何識別Bug以及如何解決Bug。
2. Java語言中異常的分類
讓我們先來了解下Java中的異常分類, 如下圖:
Java中的異常分為Error錯誤和Exception異常兩大類
Error錯誤: 一般所有編譯時期的錯誤或者系統(tǒng)錯誤, 都來自于虛擬機自身. 錯誤無法處理。
Exception異常: 它規(guī)定程序本身可以處理的異常, 是指程序本身有問題, 異??梢蕴幚?。
而Java里的異常又可以分為如下兩種情況:
編譯期異常:?一般集成開發(fā)工具比如IDEA工具, Eclipse工具等都有語法提示功能. 編譯期異常這些工具都有明顯的提示, 根據(jù)提示修改即可。
RuntimeException運行時異常: 運行時異常, 其中一部分比如IO異常等是可以通過try...catch手動拋出, 或者通過throws等Java語法處理掉. 而有些是程序運行中意外發(fā)成的, 這些異常也就是bug. 下面主要研究的就是bug如何處理。
3. 解決Bug整體思路
程序出Bug的時候, 我們最直接的感受是, 程序報錯了.......
初學者這個時候就很慌, 哪里出問題了呢? 我該如何下手呢? 然后直接用眼睛一遍一遍的看代碼, 想看出問題。其實這些都是錯誤的做法!!!
如果是幾百行, 上千行代碼, 將很難用眼睛看出問題.
所以解決Bug的整體思路是:
- 找到程序代碼異常出現(xiàn)在第幾行, 也就是哪一行代碼的問題, 導致的Bug。
- 找到問題后, 修改就方便了. 其實改Bug主要是不容易找到Bug在哪里。
4. 發(fā)現(xiàn)解決Bug利器 - 日志
看錯誤日志, 雖然都是英文的, 可能有些小伙伴看不懂, 但是建議通讀一遍, 看看是否有提示錯誤出現(xiàn)在第幾行, 很多簡單的問題, 日志上已經(jīng)指定了哪個類, 第幾行的錯誤。
下面大家看例子:
運行結(jié)果如下:
這樣大家就可以清楚的看到, 錯誤日志中已經(jīng)明顯的告訴我們, 問題出在TestA.java這個類的第20行代碼上, 我的第20行代碼是:
原因是他的返回值是字符串并且包含中文, 我們強制轉(zhuǎn)換類型為Integer, 結(jié)果拋出了類型轉(zhuǎn)換異常。
5. 發(fā)現(xiàn)解決Bug利器 - Debug調(diào)試工具使用
不管是IDEA集成開發(fā)工具, 還是Eclipse開發(fā)工具都自帶調(diào)試Bug的利器, Debug工具。但是初學者不會用, 下面健哥帶大家學習Debug工具的使用。
- 首先就是需要給代碼打斷點, 斷點的作用是決定代碼執(zhí)行到哪一行暫停下來, 好讓我們詳細看看執(zhí)行情況. 而初學者恰恰不會打斷點, 搞得很暈, 所以健哥給大家的建議就是初學者, 可以在代碼入口的第一行打斷點.
- 斷點使用規(guī)則:
? ? ? ? ?斷點不可以打在接口上, 只能使用在類上,
? ? ? ? ?斷點不可以打在方法定義行上
? ? ? ? ?斷點不可以打在空行, 注釋行
? ? ? ? ?斷點不可以打在全局變量上
下面標注的都是不可以打斷點的位置:
- main方法是程序的入口, 斷點可以打在它下面的第一行上, 如下圖:
- 運行main方法, 執(zhí)行代碼, 會自動進入到斷點行, 暫停下來, 接下來可以點擊下圖所示按鈕, 讓代碼一行一行執(zhí)行. 每點擊一次代碼執(zhí)行一行, 這樣在哪一行報錯, 就清晰可見了. 方便Bug定位.
文章來源:http://www.zghlxwxcb.cn/news/detail-649694.html
- 在Variables標簽中還可以看到執(zhí)行后的變量以及對象的值是多少, 每執(zhí)行一行代碼的時候, 看著代碼腦子里想它的結(jié)果運行完這一行是多少, 再看下面監(jiān)測的數(shù)值, 是否匹配, 是否滿足預期。如果不滿足, 是自己想錯了, 還是代碼執(zhí)行錯了. 這樣就知道代碼執(zhí)行的原因了。
文章來源地址http://www.zghlxwxcb.cn/news/detail-649694.html
- 以后再遇到異常,你知道該怎么解決了嗎?如果還不知道怎么解決,給來找健哥,健哥手把手帶你搞定這些異常!
到了這里,關(guān)于Java常見Bug解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!