我试图在某些客户端/服务器代码中追踪 EOFException
的来源,但使用的许多类仅具有抛出 IOException
的方法。 code>,而不是专门的 EOFException
。通常我只会查看堆栈跟踪,但我没有它并且无法重现它。因此,拥有一个包含专门抛出 EOFException 的方法的每个类的列表会很有帮助,但我不知道如何找出这些信息。
是否有关于每个(标准)Java 类(在 SE 7 中,以我为例)的信息源,这些类具有抛出 EOFException
的方法?我尝试阅读 EOFException
上的 Javadocs没有效果。
(至少我发现 DataInput
确实提到了EOFException
。但是还有更多吗?)
后记:因为似乎唯一的方法就是检查源代码,here是我在提取的源代码(1.7.0_45)中搜索“EOFException
”的结果。
最佳答案
编辑: 在底部为 JDK 中的所有源代码添加了 7.51 的结果。
在 Java 6.17 中,以下是显式抛出 java.io.EOFException
的所有类。具体来说,它是在每个源代码文件中发现 new\s+EOFException
的次数。
java.io.DataInputStream.java: 8
java.io.ObjectInputStream.java: 6
java.io.RandomAccessFile.java: 8
java.util.zip.GZIPInputStream.java: 2
java.util.zip.InflaterInputStream.java: 1
java.util.zip.ZipFile.java: 1
java.util.zip.ZipInputStream.java: 1
这里还有一点信息:所有包含 catch\s*\(\s*EOFException
:
java.io.ObjectInputStream.java: 1
java.util.zip.ZipInputStream.java: 1
请注意,没有扩展 EOFException
的标准 java.*
异常类(不存在
extends\s+([a-z]+\.)*EOFException
java.*
源代码中的任何位置)。
这是一个有限但有值(value)的起点。正如其他人所提到的,可能会遗漏某些情况——当您拥有的只是可以使用的源代码时,找到它们将非常耗时。希望这些信息能让您走上正确的道路。
以下是 Java 7.51 的结果,适用于 JDK 提供的所有源代码:
扩展\s+([a-z]+\.)*EOFException
无
catch\s*\(\s*EOFException
com.sun.imageio.plugins.gif.GIFImageReader: 1
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl: 1
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl: 4
com.sun.org.apache.xerces.internal.impl.XMLVersionDetector: 1
com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDLoader: 2
java.io.ObjectInputStream: 1
java.util.zip.ZipInputStream: 1
新\s+EOFException
com.sun.corba.se.impl.io.IIOPInputStream: 1
com.sun.imageio.plugins.png.PNGImageReader: 1
com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl: 1
com.sun.org.apache.xerces.internal.impl.XMLEntityManager: 1
com.sun.org.apache.xerces.internal.impl.XMLEntityScanner: 1
java.io.DataInputStream: 8
java.io.ObjectInputStream: 6
java.io.RandomAccessFile: 8
java.util.zip.GZIPInputStream: 2
java.util.zip.InflaterInputStream: 1
java.util.zip.ZipFile: 1
java.util.zip.ZipInputStream: 1
javax.imageio.stream.ImageInputStreamImpl: 8
关于java - 在哪里可以找到所有具有抛出 EOFException 方法的 Java (SE 7) 标准库类的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21458345/