java e.getmessage() null_Java e.getMessage 错误信息为null
解決方案:用e.printStackTrace() e.getMessage()為null也很正常,NullPointException的getMessage()就為null 我在拋出Exception時也可以直接??throw?new?MyException();?這樣getMessage()返回的就是null了
這幾天做的項目,測試小組說測出來的異常日志有問題,沒有把異常的信息打印出來,但是我回去看代碼每一個catch語句里面都有g(shù)etMessage呀,怎么getMessage會為空的呢?很是不懂其中的原因,之后上百度搜了下資料,覺得有下面一丟丟的總結(jié),不知道正確不,不妥的地方希望各位大神幫我補充下
Java的異常關(guān)系圖如下
:
測試小組說的那個沒有g(shù)etMessage信息打印出來的異常就是一個nullPointerException異常,后面我又去動手試了下其他的幾個runtime異常,發(fā)現(xiàn)getMessage都是為空的,之后我又去試了下SQLException和IOException,發(fā)現(xiàn)者兩種異常的在catch的時候getMessage是不為null的。由此我覺得runtime異常發(fā)生的時候JVM調(diào)用的是父類無參的構(gòu)造器
public Exception() {
super();
}
而SQLException和IOException異常發(fā)生的時候JVM調(diào)用的是父類有參的構(gòu)造器
public Exception(String message) {
super(message);
}
所以SQLException和IOException的getMessage不為null,而runtime異常卻為空。但是為什么SQLException和IOException調(diào)用的是有參的,而runtime異常調(diào)用的是無參,我還不知道具體原因,但是避免getMessage為null的話可以使用e.printStackTrace()或者logger.error("msg", e)把異常的信息打印出來。
超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的java e.getmessage() null_Java e.getMessage 错误信息为null的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java plt_matplotlib
- 下一篇: selenium java sessio