天天看點

封裝異常處理之坑

  

java.lang.RuntimeException: hh  msg遺失

at com.citi.risk.scef.limitexposure.config.exception.DBException.test(DBException.java:39)    第一堆棧:throw new RuntimeException("hh");遺失了第一現場

at com.citi.risk.scef.limitexposure.config.exception.DBException.main(DBException.java:29)

小結:msg遺失,堆棧第一現場遺失

 項目中做了修複:

封裝異常處理之坑
封裝異常處理之坑

-===========================================

java.lang.RuntimeException: hh

at com.citi.risk.scef.limitexposure.config.exception.DBException.test(DBException.java:39)  第一堆棧仍然是throw new RuntimeException("hh")

Caused by: java.lang.ArithmeticException: / by zero

at com.citi.risk.scef.limitexposure.config.exception.DBException.test(DBException.java:37)   好在第一現場出現在Caused By中,但莫名其妙堆棧變長了,不利于檢視

... 1 more

msg遺失,但仍可在Caused By中,找到堆棧第一現場

java.lang.ArithmeticException: / by zero

at com.citi.risk.scef.limitexposure.config.exception.DBException.test(DBException.java:37)  第一堆棧為1/0

msg原汁原味,堆棧第一現場在第一行

實踐中

1)優先直接抛原始異常

2)若就是需要封裝原始異常,務必将原始異常e傳入封裝異常,否則遭到堆棧第一現場遺失