出現了異常,如何快速定位到錯誤代碼


  java異常處理機制,一般形式為Try{} catch {} finally{},其中只有當Try代碼塊中出現了異常,才會跳轉到catch代碼塊,而finally是無論如何都會執行的。

第一種情況:

  Try

  {

  }

  catch(IOExcetion e)

  {

  }

  finally

  {

  }

  1.如果try代碼塊不出現異常,那么catch中的語句不會執行,當執行完finally代碼塊后,程序正常結束。

  2.出現try代碼塊異常,如果異常恰好是IOException或者是IOException的子類,那么會執行catch代碼塊,然后執行finally代碼塊,程序正常結束;

             如果為其他異常而且不是IOException的子類,那么同樣不會執行catch代碼塊,當執行完finally代碼塊,程序異常結束,並向外面拋出                                                未被捕捉到的異常。

第二種情況

  程序運行時,日志打印中出現異常提示,是很正常的事情。例如在進行數據庫查詢時,如果發生異常,而你又希望程序繼續執行,你要做的只要捕獲這個異常即可。同時通常大家會將這個異常打印出來,雖然此時由於異常已經被處理,程序實際上在正常運行。

第三種情況

  程序出錯,但是並沒有拋出相應異常。這種情況一般出現在出現運行時異常,例如空指針異常,雖然有異常捕捉語句,但是大多數都是針對不得不進行的非運行時異常捕獲,所以很容易丟失異常出現的位置。比如在一個方法中出現了這種異常,在調用它的方法中才有可能報異常,這就導致了異常定位的困難。

 

so

  程序出錯,一般會報異常,所以第一件要做的事情就是定位異常出現的位置。

  1. 默認在調試時,會在后台打印出異常信息,以及出現異常的位置。大多數情況下可以幫助你定位到異常位置。

  2.如果定位到異常位置,發現該異常已經被捕獲並處理,那么這就不是導致程序出錯的異常位置。需要根據其他信息逐步定位到異常位置。

  3.程序出錯,但是沒有相關的異常信息提示,這時需要分析catch語句,逐步調試到異常代碼段。

    例如,方法1和方法2都會拋出異常,但是確不會有異常信息提示。

public class Test
{
    public static void main(String[] args)
    {
        try
        {
            method1();
            method2();
        }
        catch (Exception e)
        {
            System.err.println("Exception!");
        }
    }
    
    private static void method1()
    {
        String str = null;
        System.out.println(str.length());
    }
    private static void method2()
    {
        int i= 1/0;
    }
}

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM