异常的最终去向是哪里?
?
什么是异常:程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件。异常本身是一个对象,产生异常就是产生了一个异常对象。异常都是从类Throwable派生出来。包括运行时异常和飞运行时异常。(这个多说无益,知道怎么处理就行)
?
发了篇和这个问题相关的帖子,LZ可以参考一下:http://www.iteye.com/topic/1039883<div style="margin-top: 0px; margin-right: 5px; margin-bottom: 5px; margin-left: 15px; background-color: #fafafa; padding: 3px; border: 1px solid #cccccc;">
<p style="margin: 0px;">?</p>
<p style="margin: 0px;"><span>问:那如果是</span><span lang="EN-US">J2EE</span><span>应用呢?异常抛向哪里?前提也是不对其进行任何处理。</span></p>
<p style="margin: 0px;"><span>求解!</span></p>
<p style="margin: 0px;">?</p>
</div>
</div>
<p>J2EE应用程序和Java应用程序本质上是一样的。</p>
<p>?</p>
<p>不过,对于容器来说,每一个请求到来时,都会开始一个新线程或者从线程池中重用一个线程,容器会在Thread.run()方法中捕获所有异常进行处理的。</p>
<p>?</p>
<p>想了解更详细的话,可以去读Tomcat源码。只是处理请求部分就可以了。</p>
<p>?</p> at testexception.Main$1.run(Main.java:29)
at java.lang.Thread.run(Thread.java:619)
Exception in thread "Thread-2" java.lang.NullPointerException
at testexception.Main$1.run(Main.java:29)
at java.lang.Thread.run(Thread.java:619)
Exception in thread "Thread-4" java.lang.NullPointerException
at testexception.Main$1.run(Main.java:29)
at java.lang.Thread.run(Thread.java:619)</pre>
<p>?</p>
<p>?</p>
发了篇和这个问题相关的帖子,LZ可以参考一下:http://www.iteye.com/topic/1039883
图片的确是很吸引人、我还有更吸引的、但是不能再这里放、这里是学习的地方、嘿嘿、你的那篇文章我看了、感觉挺深奥的、我再多学习学习就差不多能理解吸收了、先谢谢了啊
at com.xiejie.ExceptionTest2$1.run(ExceptionTest2.java:17)at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-2" java.lang.UnsupportedOperationException: Not supported yet.
at com.xiejie.ExceptionTest2$1.run(ExceptionTest2.java:17)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-4" java.lang.UnsupportedOperationException: Not supported yet.
at com.xiejie.ExceptionTest2$1.run(ExceptionTest2.java:17)
at java.lang.Thread.run(Unknown Source)</pre>
<p>?按照我的理解是从这个异常栈的上面往下找、到这<span style="white-space: pre;">at java.lang.Thread.run(Unknown Source)</span>是说的异常抛给了:Thread.run()</p>
<p>那下一步该到JVM终止了、</p>at com.xiejie.ExceptionTest2$1.run(ExceptionTest2.java:17)
at java.lang.Thread.run(Unknown Source)
at com.xiejie.ExceptionTest2$2.run(ExceptionTest2.java:22)
at java.lang.Thread.run(Unknown Source)
at com.xiejie.ExceptionTest2.main(ExceptionTest2.java:25)</pre>
<p>?按照我的理解是从这个异常栈的上面往下找、到这<span style="white-space: pre;">at java.lang.Thread.run(Unknown Source)</span>是说的异常抛给了:Thread.run()</p>
<p>那下一步该到JVM终止了、但是这个异常栈的最底部却又回到了<span style="white-space: pre;">at com.xiejie.ExceptionTest2.main(ExceptionTest2.java:25)这个地方就是b.run();这条语句</span></p>
<p>但是终归还是main方法、</p>
</div>
<p>?</p>
<p><span style="color: #ff0000;">启动一个线程是 ?Thread.start() ?不是Thread.run()?</span></p>
<p>?</p>
<p>把代码改成strat()试试。</p>
<p>?</p>
<p>?</p>
小弟现在也糊涂了、天天都要上班、学校还一堆毕业的事情、毕业设计到现在还没着落呢、哎、
Tomcat对异常的处理主要由StandardHostValve和ErrorReportValve来处理,具体可以参考这篇文章:http://www.goldendoc.org/2011/02/tomcat_host/
Tomcat对异常的处理主要是根据JSR154来做的,里面有讲Servlet容器应该如何去处理传播到容器的异常。
为什么不指点指点而非要吐槽呢
为什么不指点指点而非要吐槽呢
因为昨晚忙…本来想写一帖的,诶等有空吧。
有兴趣的话可以看看Thread.UncaughtExceptionHandler和ThreadGroup.uncaughtException相关。这算是指点么?at com.xiejie.ExceptionTest2$1.run(ExceptionTest2.java:17)
at java.lang.Thread.run(Unknown Source)
at com.xiejie.ExceptionTest2$2.run(ExceptionTest2.java:22)
at java.lang.Thread.run(Unknown Source)
at com.xiejie.ExceptionTest2.main(ExceptionTest2.java:25)</pre>
<p>?按照我的理解是从这个异常栈的上面往下找、到这<span style="white-space: pre;">at java.lang.Thread.run(Unknown Source)</span>是说的异常抛给了:Thread.run()</p>
<p>那下一步该到JVM终止了、但是这个异常栈的最底部却又回到了<span style="white-space: pre;">at com.xiejie.ExceptionTest2.main(ExceptionTest2.java:25)这个地方就是b.run();这条语句</span></p>
<p>但是终归还是main方法、</p>
</div>
<p>?</p>
<p><span style="color: #ff0000;">启动一个线程是 ?Thread.start() ?不是Thread.run()?</span></p>
<p>?</p>
<p>把代码改成strat()试试。</p>
<p>?</p>
<p>?</p>
</div>
<p><br>啊哦,低级失误</p>
为什么不指点指点而非要吐槽呢
因为昨晚忙…本来想写一帖的,诶等有空吧。
有兴趣的话可以看看Thread.UncaughtExceptionHandler和ThreadGroup.uncaughtException相关。这算是指点么?
给点路子总比什么都没有强啊、我这是个初学者、什么都不会呢、需要各路神仙指点啊、
为什么不指点指点而非要吐槽呢
因为昨晚忙…本来想写一帖的,诶等有空吧。
有兴趣的话可以看看Thread.UncaughtExceptionHandler和ThreadGroup.uncaughtException相关。这算是指点么?
又木有关于这方面的书籍给推荐一本?