WEB开发网
开发学院软件开发Java Java 理论与实践: 理解 JTS —— 事务简介 阅读

Java 理论与实践: 理解 JTS —— 事务简介

 2010-03-22 00:00:00 来源:WEB开发网   
核心提示: 与比较简单的 Java 程序进行类比,事务在应用程序级别所提供的一些优势与 catch 和 finally 块在方法级别所提供的优势相同;它们使我们不用编写很多错误复原代码,Java 理论与实践: 理解 JTS —— 事务简介(7),即可执行可靠的错误复原,考虑下面这个方法,幸运的是,所有这些都

与比较简单的 Java 程序进行类比,事务在应用程序级别所提供的一些优势与 catch 和 finally 块在方法级别所提供的优势相同;它们使我们不用编写很多错误复原代码,即可执行可靠的错误复原。考虑下面这个方法,该方法将一个文件复制到另一个文件:

public boolean copyFile(String inFile, String outFile) { 
 InputStream is = null; 
 OutputStream os = null; 
 byte[] buffer; 
 boolean success = true; 
 
 try { 
  is = new FileInputStream(inFile); 
  os = new FileOutputStream(outFile); 
  buffer = new byte[is.available()]; 
  is.read(buffer); 
  os.write(buffer); 
 } 
 catch {IOException e) { 
  success = false; 
 } 
 catch (OutOfMemoryError e) { 
  success = false; 
 } 
 finally { 
  if (is != null) 
   is.close(); 
  if (os != null) 
   os.close(); 
 } 
 
 return success; 
} 

忽略为整个文件分配一个缓冲区是一个不好的想法,但是在这个方法中哪里错了呢?有很多东西。输入文件可能不存在,或者该用户可能没有这个文件的读权限。用户可能没有输出文件的写权限,或者该文件被另一个用户锁定。可能没有足够的磁盘空间来完成该文件的写操作,或者由于没有足够的内存可用,分配缓冲区可能失败。幸运的是,所有这些都由 finally 语句来处理,该语句释放了 copyFile() 所使用的所有资源。

上一页  2 3 4 5 6 7 8  下一页

Tags:Java 理论 实践

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接