Возможно обработать эти исключения с Thread.setDefaultUncaughtExceptionHandler()
, однако это, кажется, смешивает с методом Android обрабатывания исключений. Я попытался использовать обработчик этой природы:
private class ExceptionHandler implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread thread, Throwable ex){
Log.e(Constants.TAG, "uncaught_exception_handler: uncaught exception in thread " + thread.getName(), ex);
//hack to rethrow unchecked exceptions
if(ex instanceof RuntimeException)
throw (RuntimeException)ex;
if(ex instanceof Error)
throw (Error)ex;
//this should really never happen
Log.e(Constants.TAG, "uncaught_exception handler: unable to rethrow checked exception");
}
}
Однако даже с переброском исключений, я был неспособен получить желаемое поведение, т.е. вход исключения, все еще позволяя Android завершить работу компонента, это произошло он, таким образом, я разочаровался в нем через некоторое время.
Вы начинаете с реализации интерфейса javax.persistence.spi.PersistenceProvider
и определения своей реализации с помощью элемента provider
в объявлении единицы сохраняемости:
<persistence-unit name="myUnit">
<provider>com.mypackage.CustomPersistenceProvider</provider>
...
</persistence-unit>
Это дает вам точку входа для создания вашей собственной EntityManagerFactory
и, следовательно, EntityManager.
Вопрос в 64 000 долларов, однако, заключается в том, зачем вам делать что-то подобное? Если это связано с вашим вопросом Lazy Hibernate JPA с использованием SOAP , то это, вероятно, неправильный подход.