最近混csdn论坛的一些收获
2011-08-15 10:24
295 查看
最近开始混迹于csdn论坛,帮助别人解决了一些问题,也学习到了很多东西。
以下内容来自别人的问题和大家的解决方案:
1。在内部类中如何调用外部类的this指针:
参考:http://topic.csdn.net/u/20110814/22/2001480e-cc1c-423f-9093-4df6b6753b5c.html?seed=551221130&r=74954240#r_74954240
2。Throwable的printStackTrace方法:
参考:http://topic.csdn.net/u/20110815/09/ff979daa-963a-41c1-a516-5c571ea367c1.html?seed=948166612&r=74954797#r_74954797
楼主因为输出的结果而质疑finally的执行顺序。
原来也看到过控制台打印出的异常堆栈信息与其它输出信息有交叉,但是没有思考过原因。原来printStackTrace不带参数的时候调用的是err流。本身也提供了可以自定义输出流的方法printStackTrace(PrintStream s),该方法内部进行了同步处理,如果想获得一致的输出结果,可以调用这个方法。
3。RuntimeException抛到哪里?
java中不要求对抛出RuntimeException及其子类的地方用throws语句进行声明。那么产生RuntimeException后有没有将异常抛出到上一层呢?答案是有的,一直向上抛,如果中途没有捕获,则由虚拟机进行处理。
随便举几个 RuntimeException 子异常,有:数组越界异常、空指针异常、0作除数异常
非RuntimeException 异常有:Socket异常、IO异常等
对比一下我们就会发现,RuntimeException 是在程序中可以完全避免的,比如数组越界异常,只要我在程序里作个判断,如果要访问的数组元素下标和数组的长度作一下比较就知道会不会越界,再比如空指针异常,如果在访问对象时判断一下对象的变量是否为空就可以了。
而非RuntimeException 则是程序无法避免的,比如IO异常,你的程序正在读一个文件,而这个文件所在磁盘出现了坏道,这就必然会引发IOException,这是不是靠编程高手编写完美的程序就可以法避免得了的,程序所能做的只有出现异常之后怎么处理的问题。
在static块中对final变量附值如果使用了try、catch围绕则需要将异常向上抛出。
我觉得是这样的,调用附值方法f()的时候的时候如果抛出异常则不会继续执行附值,你这里蒋异常捕获了,就会导致静态final变量没有被附值的问题,这个问题好像自己没有办法处理。所以你需要继续向上一层抛出直到由编译器执行正确的操作。
⋯⋯
备补充。
以下内容来自别人的问题和大家的解决方案:
1。在内部类中如何调用外部类的this指针:
参考:http://topic.csdn.net/u/20110814/22/2001480e-cc1c-423f-9093-4df6b6753b5c.html?seed=551221130&r=74954240#r_74954240
class OuterClass { class InnerClass { OuterClass temp = OuterClass.this; } }我原来处理的时候都是在外部类中定义一个变量指向自己的this,然后在内部类中调用自己定义的那个变量。
2。Throwable的printStackTrace方法:
参考:http://topic.csdn.net/u/20110815/09/ff979daa-963a-41c1-a516-5c571ea367c1.html?seed=948166612&r=74954797#r_74954797
楼主因为输出的结果而质疑finally的执行顺序。
原来也看到过控制台打印出的异常堆栈信息与其它输出信息有交叉,但是没有思考过原因。原来printStackTrace不带参数的时候调用的是err流。本身也提供了可以自定义输出流的方法printStackTrace(PrintStream s),该方法内部进行了同步处理,如果想获得一致的输出结果,可以调用这个方法。
3。RuntimeException抛到哪里?
java中不要求对抛出RuntimeException及其子类的地方用throws语句进行声明。那么产生RuntimeException后有没有将异常抛出到上一层呢?答案是有的,一直向上抛,如果中途没有捕获,则由虚拟机进行处理。
4。为什么要使用不用捕获的RuntimeException:
java 的异常分两大类,RuntimeException 及其子类不要求捕捉,而其它的异常要求捕捉。随便举几个 RuntimeException 子异常,有:数组越界异常、空指针异常、0作除数异常
非RuntimeException 异常有:Socket异常、IO异常等
对比一下我们就会发现,RuntimeException 是在程序中可以完全避免的,比如数组越界异常,只要我在程序里作个判断,如果要访问的数组元素下标和数组的长度作一下比较就知道会不会越界,再比如空指针异常,如果在访问对象时判断一下对象的变量是否为空就可以了。
而非RuntimeException 则是程序无法避免的,比如IO异常,你的程序正在读一个文件,而这个文件所在磁盘出现了坏道,这就必然会引发IOException,这是不是靠编程高手编写完美的程序就可以法避免得了的,程序所能做的只有出现异常之后怎么处理的问题。
5.final变量附值问题:
原帖地址:http://topic.csdn.net/u/20110822/16/673ee3fd-0b7f-44fa-9d38-a2b8f8ccee8d.html?1662public static final String fs; static { try { fs = f(); } catch (RuntimeException e) { System.out.print(e.getMessage()); throw e; } }
在static块中对final变量附值如果使用了try、catch围绕则需要将异常向上抛出。
我觉得是这样的,调用附值方法f()的时候的时候如果抛出异常则不会继续执行附值,你这里蒋异常捕获了,就会导致静态final变量没有被附值的问题,这个问题好像自己没有办法处理。所以你需要继续向上一层抛出直到由编译器执行正确的操作。
⋯⋯
备补充。
相关文章推荐
- 最近发的一些csdn下载资源
- 2012-5-31 参加云时代质量的力量论坛与 16 届软件展览会的一些收获
- 微服务架构的基础框架选择:Spring Cloud还是Dubbo 最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构。近期也看到各大技术社区开始组织一些沙龙和论坛来分
- 最近学习SEO的一些收获
- 恭贺《开发高手》停刊及关于下一代CSDN论坛的一些看法
- 最近的一些收获
- CSDN论坛升级,竟然让我悟出一些道理
- 最近收获的一些经验
- 对CSDN论坛一些不太满意的地方
- 谈谈最近SEO优化的论坛以及一些总结
- 总结&分享一下自己最近的一些收获
- 在csdn论坛上一些csdn网友对初学C++的菜鸟们的一些建议
- (每日一转)黑马程序员--- 最近逛黑马论坛写的一些代码
- 最近逛黑马论坛写的一些代码
- 参加云时代质量的力量论坛与 16 届软件展览会的一些收获
- 总结最近学jstl的一些收获,自定义jstl标签,jstl foreach 遍历map
- VB.NET最近的一些收获1
- 网站建设---最近的一些收获
- csdn论坛最近又有人灌水
- csdn论坛最近又有人灌水