Java處理異常機制和Log4j的配置

      異常處理java

1.不使用異常機制的弊端
  01.代碼臃腫
  02.程序員要花很大精力「堵漏洞」
  03.程序員很難堵住全部「漏洞」
  04.對代碼的修改極其不利程序員

2.異常機制
  01. 異常
    程序的運行過程當中所發生的不正常的事件,它會中斷正常運行的程序。
  02.Java編程語言使用異常處理機制爲程序提供了錯誤處理的能力
    程序中異常處理步驟:
      001.程序中預先設置好對付異常的處理辦法
      002.程序運行
      003.異常
      004.對異常進行處理
      005.處理完畢,程序繼續運行 apache

3.Java的異常處理是經過5個關鍵字來實現
  01.try
    執行可能產生異常的代碼
  02.catch
    捕獲異常
  03.finally
    不管是否發生異常,代碼總能執行
  04.throw
    手動拋出異常
  05.throws
    聲明方法可能要拋出的各類異常
  語法:
    try{
      //可能出現異常的代碼段
     }catch(異常類型(Exception) ex){編程

      //對異常進行處理的代碼段
     }fanilly{
      //代碼段
     }
      *異常是一種特殊的對象,類型爲java.lang.Exception或其子類數組

4.編譯器的異常拋出
  Exception in thread "main" java.util.InputMismatchException
  at java.util.Scanner.throwFor(Scanner.java:840)
  at java.util.Scanner.next(Scanner.java:1461)
  at java.util.Scanner.nextInt(Scanner.java:2091)
  at java.util.Scanner.nextInt(Scanner.java:2050)
  at Demo01.main(Demo01.java:7) app

    01.Exception in thread "main" java.util.InputMismatchException
      *拋出的是異常的類型
     02.at Demo01.main(Demo01.java:7)
      001.main:在此方法中拋出了異常
      002.(Demo01.java:7):異常拋出的位置編程語言

5.異常類中經常使用的方法
  01.printStackTrace()
    拋出異常的內存堆棧信息及錯誤的位置
      *輸出異常的堆棧信息
  02.getMessage()
    拋出異常信息
      *返回異常信息描述字符串,是printStackTrace()輸出信息的一部分工具

6.常見的異常類型
  01.Exception
    異常層次結構的父類
  02.ArithmeticException
    算術錯誤情形,如以0做除數
  03.ArrayIndexOutOfBoundsException
    數組下標越界
  04.NullPointerException
    嘗試訪問null對象成員
  05.ClassNotFoundException
    不能加載所需的類
  06.IllegalArgumentException
    方法接收到非法參數
  07.ClassCastException
    對象強制類型轉換出錯
  08.NumberFormatException
    數字格式轉換異常,如把「abc」轉換成數字ui

7.Java中繼承的關係
  01.Object(異常類的頂級父類)
    001.Error(程序沒法處理的錯誤(非檢查異常))
    002.Exception(程序可處理的異常)
      0001.非查詢異常
        00001.RuntimeException
        00002.ArrayIndexOutOfBoundsException
        00003.ArithmeticException
        00004.NumberFormatException
        00005.NullPointerException
      0002.非運行異常(檢查異常)
        00001.IOException
        00002.EoFException
        00003.FileNotFoundException
        00004.SQLException
        00005.ClassNotFoundException debug

8.生成異常語句
  01.快捷方法
    001.選中代碼
    002.Alt + Shift + Z
  02.手動
    001.選中代碼
    002.右鍵 → surround With → try(try catch block)

9.程序退出
  01.System.exit()
    001.帶參方法
      參數爲0是程序正常退出
      參數非0是程序強制退出(關閉Java虛擬機)

10.小結
  01.try-catch塊中存在return語句,是否執行finally塊,若是執行,執行順序
    執行順序:
      try ---> catch ---> finally ---> return
  02.try-catch-finally塊中,finally塊惟一不執行的狀況
    使用System.exit()方法,由於會關閉Java虛擬機

11.總結
  01.異常分爲Checked異常和運行時異常
    001.Checked異常必須捕獲或者聲明拋出
    002.運行時異常不要求必須捕獲或者成名拋出
  02.try-catch-finally中存在return語句的執行順序
    try ---> catch ---> finally ---> return
  03.finally塊中語句不執行的狀況
    出現了System.exit()語句!

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
          異常日誌

1.throws(系統自動拋出異常)
  01.語法
    訪問修飾符 返回值類型 方法名() throws Exception{

    }
  02.聲明異常,拋給調用這處理。
    *調用者必須使用try-catch進行處理
  03.位置
    方法名後面進行聲明異常,多個異常使用逗號隔開

2.throw(手動拋出異常)
  01.語法:
    throw new Exception(拋出的內容!!);
  02.手動拋出異常處理方式
    001.使用try-catch語句在方法中處理
    002.使用throws拋給調用者,讓調用者使用try-catch語句處理異常

3.異常的分類
  01.Throwable
    001.Error
      僅靠程序自己沒法恢復的嚴重錯誤
      如:
        0001.AWTError
        0002.ThreadDeath
        ..........
    002.Exception
      由Java應用程序拋出和處理的非嚴重錯誤
        0001.SQLException
        0002.ClassNotFoundException
        .......
          *Checked異常,程序必須處理該類異常
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      0001.RuntimeException(運行時異常,不要求程序必須作出處理)
      00001.ArithmeticException(運行時異常)
      00002.NullPointerException(空指針異常)
      00003.NumberFormatException(格式轉換異常)
      ............

4.throw和throws的區別
  01.throw
    001.一次只能拋出一個異常
    002.使用try-catch語句進行處理
  02.throws
    001.一次能夠拋出多個異常
    002.處理方式
      0001.使用try-catch語句進行處理
      0002.使用throws拋給調用者,讓調用者使用try-catch語句處理異常
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      開源日誌記錄log4j工具

1.使用log4j記錄程序運行的過程,存儲起來,方便後期查看

2.日誌及分類
  01.日誌(log)
    主要用來記錄系統運行在一些重要操做信息,便於監視系統運行狀況,幫助用戶提早發現和避開可能出現的問題,或者出現問題後根據日誌找到緣由
  02.日誌分類
    SQL日誌、異常日誌、業務日誌
  03.log4j時一個很是優秀的開源日誌記錄工具
    001.控制日誌的輸出級別
    002.控制日誌信息傳輸的目的地時控制檯、文件等
    003.控制每一條日誌的輸出格式
3.使用log4j記錄日誌步驟
  01.在項目中加入log4j的JAR文件
  02.建立log4j.properties文件
  03.配置日誌信息
  04.使用log4j記錄日誌信息

4.詳細步驟
  01.添加JAR包
    001.提早準備好JAR包
    002.在工程中選中相應的工程(右鍵)→Properties(選擇)→ Java Build Path(選擇)→ Libraries(選擇)→ Add External JARs....(選擇)→找到預先準備好的JAR包 → 打開 → OK
  02.編寫Log4j代碼
    001.右鍵添加file文件。
      *文件名後綴名爲(properties)
      *log4j中的註釋爲(##)
      *添加到src目錄下
  03.使用日誌文件
    001.使用org.apache.log4j.Logger包下的Logger類
    002.使用Logger類下的Info方法
  04.示例
    public class Test {
      static Logger lo = Logger.getLogger(""); //logger類不能夠實例化
    public static void main(String[] args) {
      lo.info("1232"); //方法入參Object(Log4j寫入的內容)
      }
    }

  05.Log4文j配置

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=本地路徑
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=info, stdout,file

    *路徑須要修改成本地

5.log4j來源   4:for

相關文章
相關標籤/搜索