powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Jasper. Зачем прокидывается NPE ?
1 сообщений из 1, страница 1 из 1
Jasper. Зачем прокидывается NPE ?
    #38312267
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При реализации DataSource для сабрепорта приходится окружать весь блок кода в try для отлова NPE. Выглядит коряво.

Исходник из jasper, на котором у меня вылетает на строке value = evaluate(expression.getId());

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
/**
 * Base class for the dynamically generated expression evaluator classes.
 * 
 * @author Lucian Chirita (lucianc@users.sourceforge.net)
 * @version $Id: JREvaluator.java 4595 2011-09-08 15:55:10Z teodord $
 */
public abstract class JREvaluator implements DatasetExpressionEvaluator
{
...
	/**
	 *
	 */
	public Object evaluate(JRExpression expression) throws JRExpressionEvalException
	{
		Object value = null;
		
		if (expression != null)
		{
			try
			{
				value = evaluate(expression.getId());
			}
			catch (NullPointerException e) //NOPMD
			{
			}
			catch (OutOfMemoryError e)
			{
				throw e;
			}
			// we have to catch Throwable because there is no way we could modify the signature
			// of the evaluate method, without breaking backward compatibility of compiled report templates 
			catch (Throwable e) //NOPMD
			{
				throw new JRExpressionEvalException(expression, e);
			}
		}
		
		return value;
	}
...
}




Мой код для DataSource:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public class R1400DataSource extends ListDataSource<MonthPower> implements JRDataSource {

   /**
   Конструктор
   **/
   public R1400DataSource(...) throws JRException {
     super();
		
      try {		
        // мой код
        // поиск данных в БД, вычисления, агрегирование....
        // достаточно большой код может быть здесь
        ...


      } catch (NullPointerException e) {
 	 throw new JRException(e);
    }

    ... имплементация JRDataSource, немножко методов
}



Собственно два вопроса:
1. За для нафиг в jasper подавляется NPE специальным блоком?
2. Не нравится мне когда достаточно большой мой блок кода в конструкторе надо окружать в try () {} catch (NPE). Как можно сделать лучше?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Jasper. Зачем прокидывается NPE ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]