就觉得很忧郁畏惧,渐渐扫描一眼就最先猜题目应当怎样怎样,然后不停的依据猜想去调解代码,虽然也会debug然则照样浪费了不少的时候。
这是由于:
1.我们没有认认真真的看非常客栈信息;
2.客栈太多,我们并不肯定究竟那里致使了题目。
解决办法就是:
1.晓得非常客栈发生的流程。
2.耐烦的浏览客栈信息。
3.解决题目
1.非常发生流程:上面报错,下面追随
举个例子:我们有以下的测试代码
package com.bsx.test; public class TestException { public static void main(String[] args) { TestException exception = new TestException(); exception.m1(); } public void m1() { m2(); } public void m2() { m3(); } public void m3() { String name = null; System.out.println(name.length()); } }
实行以后输出效果以下:
Exception in thread "main" java.lang.NullPointerException at com.bsx.test.TestException.m3(TestException.java:22) at com.bsx.test.TestException.m2(TestException.java:17) at com.bsx.test.TestException.m1(TestException.java:13) at com.bsx.test.TestException.main(TestException.java:9)
我们能够看到,这个毛病日记输出的递次跟挪用递次是相反的,为何呢?
我们晓得java的要领在实行的时刻是在虚拟机栈中实行的,每实行一个要领就会新建一个栈帧然后压入到虚拟机栈中。
这是一个后进先出的构造,所以报错的时刻也是从被挪用者最最先报错,然后挪用者顺次报错,所以打印毛病时的递次也是报错的位置在最上面,挪用者顺次向后排。由此我们能够得出结论:上面报错,下面追随。
2.读懂报错信息:寻觅我们代码报错的位置
从上面的剖析我们晓得报错位置在上面。大部分情况下,最上方的报错信息就是我们代码失足的位置。
然则有时刻最上方的日记并非我们本身的代码,那是由于我们的代码挪用了一些三方jar包的代码。然则这并不影响我们去定位题目,我们照样依据上面报错,下面追随来定位题目,那末真正报错的位置照样在上面。
那末我们只需要从上往下顺次找我们本身的代码即可。第一个找到的我们的代码位置就是我们代码中激发报错的位置。有时刻有些报错信息很明显,我们能够依据报错信息来直接定位到题目关键。
有时刻报错信息并不能很明白的指明报错缘由,这时刻,我们就能够在这个准确的位置打上断点来调试一下。
以上就是java怎样定位非常客栈中非常发生的位置的细致内容,更多请关注ki4网别的相干文章!