我正在尝试执行下面编写的代码,该代码应该抛出异常,但它没有这样做
try {
Field.class.getMethod("getInt", Object.class).setAccessible(false);
StringSearch.class.getMethod("searchChars",cc.getClass(),pattern3.getClass()).setAccessible(false);
ss4.getClass().getMethod("searchChars",cc.getClass(),pattern3.getClass()).setAccessible(false);
ss4.searchChars(cc,pattern3);
ss4.searchString(str,pattern);
}
catch(NoSuchMethodException ex){
ex.printStackTrace();
}
它实际上应该抛出 IllegalAccessException。
ss4 是 BNDMWildcardsCI 类的对象(字符串搜索的算法之一) cc、pattern3 是字符数组 str、pattern 都是字符串
为什么它不抛出异常,它不抛出 NoSuchMethodFound 异常意味着它能够找到该方法,我也尝试打印 isAccessible 并且它说 false 但是当我运行测试时它不会抛出任何异常
最佳答案
据我所知,如果一个方法被声明为公共(public)(或以其他方式可访问),setAccessible(false)
无法将其设为私有(private)。仅当您有私有(private)方法并且之前调用过 setAccessible(true)
时,它才有用。
关于java - 代码不抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13811359/