如何在不调用给定方法的情况下测试它是否会抛出异常(取决于传递的对象)?
例如:
public static boolean isAllowed(SomeObject obj)
{
try
{
myMethod(obj);
return true;
}
catch(Exception ex)
{
return false;
}
}
但是上面的方法会执行MyMethod()
,我该如何在java中实现呢?
编辑:
实际上,我想这样做是为了验证文件名。看到这个:Validate a file name on Windows
最佳答案
正如其他人所说,通常不可能根据输入判断是否会抛出异常而不实际计算它。 Java 是图灵完备的,所以这可以简化为 halting problem .但是,您可以在运行时找到方法可以抛出的所有异常:
try {
Method myMethod = this.getClass().getMethod("myMethod");
System.out.println(Arrays.toString(myMethod.getExceptionTypes()));
} catch (NoSuchMethodException e) {}
关于java - 测试一个方法是否会在不调用它的情况下抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6778637/