Java 6和Java 7对throw语句的不同理解
![](http://upload-images.jianshu.io/upload_images/3983687-80ac6280258d5d66.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2 代码分析
Java 6对该代码理解:Java编译器处理“简单而粗暴”——由于在捕获该异常时声明ex类型是Exception,因此Java编译器认为这段代码可能抛出Exception异常,所以包含这段代码的方法通常需要声明抛出Exception异常。
【java编程开发免费领取资料的微信:tangniu520666,备注“4”需要的可以加一下】
Java 7对该代码理解:Java编译器会执行更细致的检查,Java 编译器会检查throw语句抛出异常的实际类型,这样编译器知道①号代码处实际上只可能抛出FileNotFoundException异常,因此在方法签名中只声明抛出FileNotFoundException异常即可。