ps里的堆棧操作 這個(gè)這個(gè)堆棧跟蹤信息是什么個(gè)意思?怎么解決?
這個(gè)這個(gè)堆棧跟蹤信息是什么個(gè)意思?怎么解決?一個(gè)簡短的回答:堆棧信息是在初始化異常對(duì)象時(shí)填寫的。這個(gè)問題真令人困惑。似乎堆棧在調(diào)用test1時(shí)拋出了一個(gè)異常,而test1的堆棧在調(diào)用test2時(shí)被重用
這個(gè)這個(gè)堆棧跟蹤信息是什么個(gè)意思?怎么解決?
一個(gè)簡短的回答:堆棧信息是在初始化異常對(duì)象時(shí)填寫的。這個(gè)問題真令人困惑。似乎堆棧在調(diào)用test1時(shí)拋出了一個(gè)異常,而test1的堆棧在調(diào)用test2時(shí)被重用。。。事實(shí)上,情況并非如此。您可以做一個(gè)實(shí)驗(yàn):在main函數(shù)的第一行(調(diào)用test1之前)寫一個(gè)句子Class.forName類(“sysexception”),或sysexception XXX=new sysexception(1234),然后執(zhí)行代碼,您會(huì)發(fā)現(xiàn)雖然打印了兩個(gè)相同的堆棧信息,但堆棧信息與test1無關(guān)。。。本質(zhì)上,原始代碼在調(diào)用test1時(shí)需要使用sysexception類,然后在執(zhí)行類的靜態(tài)初始化時(shí)創(chuàng)建系統(tǒng),此時(shí)填寫exception對(duì)象的堆棧信息。因此,在實(shí)踐中,需要拋出的異常對(duì)象要么創(chuàng)建一個(gè)新對(duì)象,要么再次拋出catch對(duì)象。