Столкнулся с весьма странной для себя проблемой — не могу поймать
исключение, генерируемое Hibernate.
Что делаю:
try
{
sessions = new Configuration().configure().buildSessionFactory();
}
catch (Throwable ex)
{
System.exit(0);
}
Смысл — хочу отловить ошибку при подключении к СУБД. Получается, что
если СУБД не запущена, выдаётся следующее исключение:
24.03.2008 22:49:39 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.6
24.03.2008 22:49:39 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
24.03.2008 22:49:39 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
24.03.2008 22:49:39 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
24.03.2008 22:49:39 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
24.03.2008 22:49:39 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
24.03.2008 22:49:39 org.hibernate.cfg.Configuration addResource
INFO: Reading mappings from resource : JTinyBroadcastLibrary/TemplateWeek.hbm.xml
24.03.2008 22:49:39 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
INFO: Mapping class: JTinyBroadcastLibrary.TemplateWeek -> TEMPLATE_WEEK
24.03.2008 22:49:39 org.hibernate.cfg.Configuration doConfigure
INFO: Configured SessionFactory: null
24.03.2008 22:49:40 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Using Hibernate built-in connection pool (not for production use!)
24.03.2008 22:49:40 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Hibernate connection pool size: 1
24.03.2008 22:49:40 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: autocommit mode: false
24.03.2008 22:49:40 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/db1
24.03.2008 22:49:40 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: connection properties: {useUnicode=yes, user=user, password=****, characterEncoding=utf8}
24.03.2008 22:49:40 org.hibernate.cfg.SettingsFactory buildSettings
WARNING: Could not obtain connection metadata
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.ConnectException
MESSAGE: В соединении отказано
STACKTRACE:
java.net.ConnectException: В соединении отказано
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:208)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2744)
at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverMa
nagerConnectionProvider.java:110)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2073)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1298)
at jtinybroadcastadv.JTinyBroadcastAdvView.<init>(JTinyBroadcastAdvView.java:44)
at jtinybroadcastadv.JTinyBroadcastAdvApp.startup(JTinyBroadcastAdvApp.java:19)
at org.jdesktop.application.Application$1.run(Application.java:171)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:27
3)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:17
3)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
** END NESTED EXCEPTION **
НО! Исключение не ловится. Т.е. программа продолжает работу. Если
смотреть отладчиком, то блок catch пропускается и выполняются
инструкции за ним. Я где-то так сильно заблуждаюсь?
P.S. Если СУБД запущена, но всё работает. Логично в принципе.
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от roy

Ответ на:
комментарий
от roy

Ответ на:
комментарий
от roy

Ответ на:
комментарий
от svr69
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум java не соединяется с mysql (2010)
- Форум No suitable driver found for jdbc:postgresql (2018)
- Форум Поймать исключение из коллбэка (2015)
- Форум [Hibernate] Помогите побороть исключение «No persister for» (2011)
- Форум Python: как поймать любое исключение и вывести его данные? (2012)
- Форум Исключения (2003)
- Форум hibernate (2013)
- Форум Hibernate. (2010)
- Форум Hibernate (2010)
- Форум Hibernate (2009)