Во время процесса, который я запускаю во время заполнения сцены e3roid на андроиде, я постоянно сталкиваюсь с исключениями, которые я хочу полностью заманить в ловушку.Возможно, мне нужно создать трекер исключений назад, через который я могу проходить в свободное время, вместо немедленного диалога, который убирает пользовательский опыт.
W/dalvikvm( 9540): threadid=1: thread exiting with uncaught exception (group=0x2
aac87c8)
E/AndroidRuntime( 9540): FATAL EXCEPTION: main
E/AndroidRuntime( 9540): java.util.ConcurrentModificationException
E/AndroidRuntime( 9540): at java.util.ArrayList$ArrayListIterator.next(Ar
rayList.java:573)
все приложение умирает с диалогом исключения ... Я бынравится иметь возможность отлавливать исключение ConcurrentModificationException из глобальной области видимости, чтобы в случае, если такое событие произошло из-за неизвестных обстоятельств, все приложение не удалялось ..
** EDIT **
во времякажется, что этот блок выстрелил во время onSceneTouchEvent
try {
postUpdate(new AddShapeImpl(scene, onX, onY));
} finally {
}
. Я слишком быстро отстреливаюсь от блока.Мне нужно все замедлить.
* Последующие действия *
Мне кажется, я решил проблему ... Я сделал один из них ...
if ( ballspawning == false)
try {
Log.v(DEBUG_TAG, "onSceneTouchEvent 1-1");
addnewball(scene, onX, onY);
Log.v(DEBUG_TAG, "onSceneTouchEvent 1-2");
} finally {
}
вы увидите, что после того, как я ввел логический флаг порождения шара и вторичная процедура, я передаю свои значения порождения, была настолько золотой ... я сделал это полем, и оно устанавливается в конце моей итерации и проверенодо того, как произойдет пересечение списка .. уууууууу !!так сладко!
нет необходимости в глобальном перехватывании .. просто старая добрая отладка.но я все еще хотел бы реализовать глобальный обработчик всех ошибок. TODO
Я снова вспыхнул параллельную ошибку ..
снимки экрана
Отладочные сообщения
Другое вхождение
снимок экрана 4
почти сужается преступник
Я пытался поймать исключение ConcurrentModificationException с
void uncaughtException(Thread t,
Throwable e){
Log.v(DEBUG_TAG, "uncaughtException **********");
Log.v(DEBUG_TAG,"thread " + t + " Throwable" + e.toString());
}
, как вы можете видеть на последнем скриншоте, что вышеупомянутый метод никогда не вызывается.
ConcurrentModificationException вылетает из приложения в диалог исключений ..
** Продолжение **
Я добавил
public class LauncherActivity extends E3Activity implements UncaughtExceptionHandler ,FPSListener,SceneUpdateListener
и во времяво время выполнения дополнительный неосуществленный метод
@Override
public void uncaughtException(Thread t,Throwable e) {
Log.v(DEBUG_TAG, "uncaughtException **************");
Log.v(DEBUG_TAG,"thread " + t + " Throwable" + e.toString());
}
и все еще без исключения ловушек ...
Я также добавил
newThread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler(){
@Override
public void uncaughtException(Thread t, Throwable e) {
Log.v(DEBUG_TAG,"*************** ERROR! An exception occurred in " + t.getName() + ". Cause: " + e.getMessage());
}
});
newThread.start();
и по-прежнему без ловушек ...
аааа
Ууууууууу!
Только что поймали исключение !!посмотрите на скриншот ... вы увидите !!!!!!
http://img17.imageshack.us/img17/135/concurrentmodificatione.png
Пойманное исключение
Спасибо за всезаставил меня усердно работать, чтобы добраться до сути обработки исключений Java!
Отличный ресурс
Я обнаружил проблему с параллелизмом с помощью
, удалив ...
открытый класс LauncherActivity расширяет E3Activity реализует UncaughtExceptionHandler, FPSListener, SceneUpdateListener
, которые я должен был сделать оригинальным ... без реализации UncaughtExceptionHandler
и добавил класс, который был очень подробно описан Джонни Ли.blog.dimond.de/?p=63
Действительно приятная штука.