Метод класса коллекционеров groupingBy () поддерживает дополнительный Collector в качестве второго аргумента:
public static <T, K, A, D> Collector<T, ?, Map<K, D>> groupingBy(Function<? super T, ? extends K> classifier,Collector<? super T, A, D> downstream)
Выше можно записать в groupBy () два значения
Map<String, List<FullCalendarDTO>> result = countryDTOList.stream().collect(Collectors.groupingBy(FullCalendarDTO::getNameOfCountryOrRegion, Collectors.groupingBy(FullCalendarDTO::getLeagueDTO)));
Это - проблема с созданием perl5db.pl __DIE__
обработчики. Если я локализую $SIG{__DIE__}
в Вашем eval
, вещи работают, как Вы ожидаете.
eval { local $SIG{__DIE__}; die MyEx->new };
Если Вы не делаете этого, Вы получаете обработчик от DB:: dbdie, который использует Карпа:: longmess. Этого не должно происходить, если dieLevel 0, но по умолчанию это 1, и это установлено на 1, если это не определяется. Это было патчем к perl5db.pl назад в 2001, и ранее значение по умолчанию было 0.
Вы, как предполагается, выключаете это с:
PERLDB_OPT="dieLevel=0" perl5.10.0 -d program
Но существует все еще ссылка кода в $SIG{__DIE__}
после этого, и это - ссылка на dbdie. Я думаю, что это - ошибка в обработке глобальной переменной $prevdie
в perl5db.pl dieLevel
. В конце той подпрограммы, существует:
# perl5db.pl dieLevel, around line 7777 elsif ($prevdie) { $SIG{__DIE__} = $prevdie; print $OUT "Default die handler restored.\n"; }
Но заметьте что после восстановления $SIG{__DIE__}
, это удерживает предыдущее значение $prevdie
, значение вообще является там утечками к другому вызову. Когда я выполняю ту командную строку, существует два вызова к dieLevel, прежде чем это обработает PERLDB_OPT
, так $prevdie
вероятно, грязно.
Так, это - насколько я добрался, прежде чем я не хотел думать о perl5db.pl больше.
Я считаю это ошибкой, любой временной код ведет себя по-другому в отладчике.
Ваша проблема могла бы быть связана с этим: Отладчик повреждает порчу таблицы символов. По существу отладчик, кажется, играет некоторые приемы с local
- по-видимому, как часть игры в песочнице вещей обеспечить интерактивность. Очевидно, питание с таблицей символов может иметь неожиданные побочные эффекты. Я предположил бы, что отладчик локализует $@
и таким образом затемнение Вашего объекта. Я не могу думать об обходном решении.
Действительно ли возможно, что у Вас есть файл RC или переменная среды (PERLDB_OPTS
) это изменяет dieLevel
опция отладчика? Я лично не использовал dieLevel
но по-видимому когда это установлено на значение, больше, чем нуль, это может вызвать раскручивание стека, и "имеет тенденцию безнадежно уничтожать любую программу, которая относится к ее обработке исключений серьезно". (Заключите в кавычки отсюда).