Необработанный тип исключения NoSuchFieldException (отражение java) - PullRequest
0 голосов
/ 17 ноября 2011

Я пользуюсь Play Framework около 1 месяца, и это здорово, но у меня была одна большая проблема , Я пытаюсь запустить следующий код в безопасном контроллере:

MyModel myModel = MyModel.all().first(); 
Field idField = myModel.getClass().getField("id"); 

О строке 2 Play говорит: Ошибка компиляции

The file /app/controllers/Security.java could not be compiled. Error 
raised is : Unhandled exception type NoSuchFieldException 

Может быть, это основная ошибка? Спасибо.

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

Вы должны обработать исключение, которое может вызвать getField (String fieldName).В этом случае исключение NoSuchFieldException.

Попробуйте написать его так:

Field idField = null;
try {
    idField = myModel.getClass().getField("id");
} catch (NoSuchFieldException nsfe) {
    throw new RuntimeException(nsfe);
}
1 голос
/ 17 ноября 2011

Если вы используете dp4j @TestPrivates или @Reflect(catchExceptions =true), вам не нужно самостоятельно писать операторы catch:

public class Security{

@Reflect(catchExceptions =true) //when false it will add the exceptions to the throws list.
public void aMethod(){
    MyModel myModel = MyModel.all().first(); 
    Field idField = myModel.getClass().getField("id"); 
    //you might as well write:
    // int id = myModel.id;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...