Java AsynchronousFileChannel.read(…)中的异常管理
Java AsynchronousFileChannel.read(…)中的异常管理,java,file-io,asynchronous,exception-handling,Java,File Io,Asynchronous,Exception Handling,java.nio.channels.AsynchronousFileChannel提供了两种从文件读取数据的方法: read(dst、位置、附件、处理程序)将在完成时调用提供的处理程序 read(dst,position)返回一个Future,它将允许我get()操作的结果 CompletionHandler接口指定一个方法失败(Throwable exc,附件),而Future则没有。它只能从其get()方法中抛出ExecutionException 假设我从一个片状磁盘上读取一个文件,该磁盘
java.nio.channels.AsynchronousFileChannel
提供了两种从文件读取数据的方法:
read(dst、位置、附件、处理程序)
将在完成时调用提供的处理程序read(dst,position)
返回一个Future
,它将允许我get()
操作的结果CompletionHandler
接口指定一个方法失败(Throwable exc,附件)
,而Future
则没有。它只能从其get()
方法中抛出ExecutionException
假设我从一个片状磁盘上读取一个文件,该磁盘抛出一个IO错误,在这两种情况下如何处理?
具体而言,我有以下3个问题:
CompletionHandler
上的failed()
方法?或者它是否会将操作指示为已完成
,结果为-1
Future
上的get()
方法是否会抛出异常,或者只是将-1
作为读取结果返回-1
,我如何区分IO错误和简单的EOF条件(最好不要像黑客一样计时操作)