国产另类ts人妖一区二区_欧美肥老太做爰视频_快穿高h肉_国产欧美综合在线

當前位置: 首頁 / 技術干貨 / 正文
健哥帶你手把手解決Java常見Bug

2023-03-02

   代碼 bug

  1. 前言

  剛開始學習Java語言的小伙伴, 很可能被各種各樣的程序bug搞得焦頭爛額, 甚至勸退.健哥將手把手帶你們了解Java中的異常體系, 如何識別Bug以及如何解決Bug.

  2. Java語言中異常的分類

  讓我們先來了解下Java中的異常分類, 如下圖:

01

  Java中的異常分為Error錯誤和Exception異常兩大類

  Error錯誤: 一般所有編譯時期的錯誤或者系統錯誤, 都來自于虛擬機自身. 錯誤無法處理.

  Exception異常: 它規定程序本身可以處理的異常, 是指程序本身有問題, 異常可以處理.

  編譯期異常: 一般集成開發工具比如IDEA工具, Eclipse工具等都有語法提示功能. 編譯期異常這些工具都有明顯的提示, 根據提示修改即可.

  RuntimeException運行時異常: 運行時異常, 其中一部分比如IO異常等是可以通過try...catch手動拋出, 或者通過throws等Java語法處理掉. 而有些是程序運行中意外發成的, 這些異常也就是bug. 下面主要研究的就是bug如何處理.

  3. 解決Bug整體思路

  程序出Bug的時候, 我們最直接的感受是, 程序報錯了.

  初學者這個時候就很慌, 哪里出問題了呢? 我該如何下手呢? 然后直接用眼睛一遍一遍的看代碼, 想看出問題.

  這些都是錯誤的做法!!!

  如果是幾百行, 上千行代碼, 將很難用眼睛看出問題.

  所以解決Bug的整體思路是:

  1.找到程序代碼異常出現在第幾行, 也就是哪一行代碼的問題, 導致的Bug.

  2.找到問題后, 修改就方便了. 其實改Bug主要是不容易找到Bug在哪里.

  4. 發現解決Bug利器 - 日志

  看錯誤日志, 雖然都是英文的, 可能有些小伙伴看不懂, 但是建議通讀一遍, 看看是否有提示錯誤出現在第幾行, 很多簡單的問題, 日志上已經指定了哪個類, 第幾行的錯誤.

  下面大家看例子:

  /**

  * @author 健哥

  */

  public class TestA {

  int a = 1;

  int b = 1;

  public String sum() {

  String total = "結果是:" + (a + b);

  return total;

  }

  public static void main(String[] args) {

  TestA a = new TestA();

  int total = Integer.parseInt(a.sum());

  System.out.println("=======" + total);

  }

  }

  運行結果如下:

02

  這樣大家就可以清楚的看到, 錯誤日志中已經明顯的告訴我們, 問題出在TestA.java這個類的第20行代碼上, 我的第20行代碼是:

  int total = Integer.parseInt(a.sum());

  原因是他的返回值是字符串并且包含中文, 我們強制轉換類型為Integer, 結果拋出了類型轉換異常.

  5. 發現解決Bug利器 - Debug調試工具使用

  不管是IDEA集成開發工具, 還是Eclipse開發工具都自帶調試Bug的利器, Debug工具.

  但是初學者不會用, 下面健哥帶大家學習Debug工具的使用.

  首先就是需要給代碼打斷點, 斷點的作用是決定代碼執行到哪一行暫停下來, 好讓我們詳細看看執行情況. 而初學者恰恰不會打斷點, 搞得很暈, 所以健哥給大家的建議就是初學者, 可以在代碼入口的第一行打斷點.

  斷點使用規則:

  斷點不可以打在接口上, 只能使用在類上,

  斷點不可以打在方法定義行上

  斷點不可以打在空行, 注釋行

  斷點不可以打在全局變量上

  下面標注的都是不可以打斷點的位置:

06

  main方法是程序的入口, 斷點可以打在它下面的第一行上, 如下圖:

03

  運行main方法, 執行代碼, 會自動進入到斷點行, 暫停下來, 接下來可以點擊下圖所示按鈕, 讓代碼一行一行執行. 每點擊一次代碼執行一行, 這樣在哪一行報錯, 就清晰可見了. 方便Bug定位.

04

  在Variables標簽中還可以看到執行后的變量以及對象的值是多少, 每執行一行代碼的時候, 看著代碼腦子里想它的結果運行完這一行是多少, 再看下面監測的數值, 是否匹配, 是否滿足預期, 如果不滿足, 是自己想錯了, 還是代碼執行錯了. 這樣就知道代碼執行的原因了.

05

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號