Java 当一个文件可以读取,但文件';s的数据格式不正确?
如果已成功读取指定的文件,但文件中的数据不正确,例如格式不正确的XML,或指定错误变量或缺少节的ini文件,或类似情况,在这种情况下应使用什么异常Java 当一个文件可以读取,但文件';s的数据格式不正确?,java,exception-handling,Java,Exception Handling,如果已成功读取指定的文件,但文件中的数据不正确,例如格式不正确的XML,或指定错误变量或缺少节的ini文件,或类似情况,在这种情况下应使用什么异常 使用带有详细异常消息的IOException有意义吗,还是应该使用其他类型的异常?标准库中的此类事件似乎没有良好的异常类型。不要使用IOException——文件已打开并已成功读取;问题在于它的内容。您可以抛出一个IllegalArgumentException,或者创建自己的异常类型 不要使用IOException——文件已打开并读取成功;问题在于
使用带有详细异常消息的IOException有意义吗,还是应该使用其他类型的异常?标准库中的此类事件似乎没有良好的异常类型。不要使用
IOException
——文件已打开并已成功读取;问题在于它的内容。您可以抛出一个IllegalArgumentException
,或者创建自己的异常类型 不要使用IOException
——文件已打开并读取成功;问题在于它的内容。您可以抛出一个IllegalArgumentException
,或者创建自己的异常类型 这是一个风格问题,因为“技术上”不管你抛出什么类型的异常;它可以是一个标准,甚至只是一个标准,包含你在其中输入的任何额外信息
也就是说,正如其他人所建议的,这可能是一个更好的选择,即“自己动手”
public class InvalidFormatting extends java.lang.Throwable
{
/** The underlying error of this instance */
public final static String Error = "An invalid format has been detected";
/** Create a new {@code InvalidFormatting} exception */
public InvalidFormatting() {
super(InvalidFormatting.Error);
}
/**
* Create a new {@code InvalidFormatting} exception with additional information
*
* @param additionalMsg The additional information to append
*/
public InvalidFormatting(String additionalMsg) {
super(InvalidFormatting.Error + "\n" + additionalMsg);
}
}
那么它就可以这样使用了
throw new InvalidFormatting("here's some extra info");
希望这能有所帮助。这是一个风格问题,因为“技术上”不管你抛出什么类型的异常;它可以是一个标准,甚至只是一个标准,包含你在其中输入的任何额外信息 也就是说,正如其他人所建议的,这可能是一个更好的选择,即“自己动手”
public class InvalidFormatting extends java.lang.Throwable
{
/** The underlying error of this instance */
public final static String Error = "An invalid format has been detected";
/** Create a new {@code InvalidFormatting} exception */
public InvalidFormatting() {
super(InvalidFormatting.Error);
}
/**
* Create a new {@code InvalidFormatting} exception with additional information
*
* @param additionalMsg The additional information to append
*/
public InvalidFormatting(String additionalMsg) {
super(InvalidFormatting.Error + "\n" + additionalMsg);
}
}
那么它就可以这样使用了
throw new InvalidFormatting("here's some extra info");
希望这能有所帮助。如果找不到适合您需要的异常,请使用您自己的异常类型。如果您的代码指出数据不正确,则应创建自己的异常并将其抛出。否则,您将使用一个库,该库告诉您数据的格式不正确,可能是通过抛出Exception,也可能是IOException的某些子类,例如CharConversionExceptin或StreamCorruptedException,或者是您自己创建的。(您知道如何找到IOException的子类,对吗?)取决于消息的对象。您可以使用带有详细信息的
IOException
,或者创建自己的Exception
、RuntimeException
,或者其他适当的子类。是的,我知道如何找到类的子类:P最接近我的特定情况的是InvalidPropertiesFormatException,因为我处理的是一个INI文件,它需要在一个特定的范围内具有多个属性。如果找不到适合您需要的异常,请使用您自己的异常类型。如果您的代码指出数据不正确,则应创建您自己的异常并将其抛出。否则,您将使用一个库,该库告诉您数据的格式不正确,可能是通过抛出Exception,也可能是IOException的某些子类,例如CharConversionExceptin或StreamCorruptedException,或者是您自己创建的。(您知道如何找到IOException的子类,对吗?)取决于消息的对象。您可以使用带有详细信息的IOException
,或者创建自己的Exception
、RuntimeException
,或者其他适当的子类。是的,我知道如何找到类的子类:P最接近我的特定情况的是InvalidPropertiesFormatException,因为我处理的是一个INI文件,它需要在一个特定的范围内具有多个属性。