try- catch嵌套使用解决的问题
2011-07-05 23:56
1076 查看
package ch12;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileRead
{
BufferedReader bufReader = null;
public FileRead()
{
try {
bufReader = new BufferedReader(new FileReader(new File("C://Log.log")));
try {
String line = bufReader.readLine();
while(null != line)
{
System.out.println(line);
line = bufReader.readLine();
}
}
catch (IOException e)
{
System.out.println("文件读取失败");
}
finally
{
dispose();
}
}
catch (FileNotFoundException e)
{
System.out.println("文件不存在");
}
}
public void dispose()
{
try {
bufReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
new FileRead();
}
}
使用try-catch嵌套来解决文件关闭的问题,当文件不存在时创建bufReader对象失败,所以不会去执行第二层的try-catch了,直接抛出异常。也不需要去关闭流了。
如果使用一层try-catch的话,如果文件不存在,则bufReader对象,也就不会创建成功,如果去finally中关闭的话,如果不判空去关闭,就会出现空指针异常。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileRead
{
BufferedReader bufReader = null;
public FileRead()
{
try {
bufReader = new BufferedReader(new FileReader(new File("C://Log.log")));
try {
String line = bufReader.readLine();
while(null != line)
{
System.out.println(line);
line = bufReader.readLine();
}
}
catch (IOException e)
{
System.out.println("文件读取失败");
}
finally
{
dispose();
}
}
catch (FileNotFoundException e)
{
System.out.println("文件不存在");
}
}
public void dispose()
{
try {
bufReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
new FileRead();
}
}
使用try-catch嵌套来解决文件关闭的问题,当文件不存在时创建bufReader对象失败,所以不会去执行第二层的try-catch了,直接抛出异常。也不需要去关闭流了。
如果使用一层try-catch的话,如果文件不存在,则bufReader对象,也就不会创建成功,如果去finally中关闭的话,如果不判空去关闭,就会出现空指针异常。
相关文章推荐
- 解决SpringView与CoordinatorLayout和AppBarLayout嵌套使用的上下滑动冲突问题
- 嵌套Fragment的使用及遇到The specified child already has a parent. You must call removeView()问题的解决
- Android ExpandableListview+Listview嵌套使用出现的问题解决办法
- 使用zoom、overflow解决IE6、IE7、FF下嵌套容器清除浮动问题
- (转载)使用 TRY/CATCH 语句解决 SQL Server 2005 死锁
- 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁
- 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁
- paip.提升用户体验---gcc c++ try catch不能捕获异常的解决--使用 SEH Ca6
- 使用zoom、overflow解决IE6、IE7、FF下嵌套容器清除浮动问题
- 使用JS解决织梦dedecms多标签嵌套的问题
- 嵌套Fragment的使用及遇到The specified child already has a parent. You must call removeView()问题的解决
- 解决try catch finally中close的问题
- Transact-SQL 中使用嵌套 TRY...CATCH
- ScrollView和RecyclerView嵌套使用显示不全问题解决
- 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁
- JavaScript ES7 中使用 async/await 解决回调函数嵌套问题
- 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁
- 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁
- SQL--使用With As 解决查询嵌套的问题
- 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁