BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 18 июн 2025, 16:31

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: [РЕШЕНО] как работает throw new BGException?
СообщениеДобавлено: 23 июл 2015, 08:22 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Пытаюсь вызвать
Код:
throw new BGException( "error" );

чтобы в ответе пришла нужная мне ошибка, делаю запрос в браузере, в логи ошибка сыпится, а вот сервер в браузере отдает
Код:
<data status="ok"/>

Код:
 Сервер: вер. 6.1.1077 / 03.06.2015 19:14:43
    os: Linux; java: Java HotSpot(TM) Server VM, v.1.7.0_71

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Последний раз редактировалось skyb 01 сен 2015, 12:02, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 23 июл 2015, 12:32 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
где вызвать?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 23 июл 2015, 12:52 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
dimOn писал(а):
где вызвать?

динамический код, переписаный экшен, притом что на другой версии биллинга все работает
это рабочий код
Код:
      if ( actionType == 9)
         {
            String requestBody = new String( Utils.readByBlock( request.getInputStream() ), "UTF-8" );
            ObjectMapper mapper = new ObjectMapper();
            JsonNode root = mapper.readTree( requestBody );
            String SAlias = root.get( "SAlias" ).asText();
            String query = " SELECT c.status FROM contract AS c " +
                        " LEFT JOIN user_login_14 AS ul ON ul.cid = c.id " +
                        " LEFT JOIN user_alias_14 AS ua ON ua.login_id = ul.id " +
                        " WHERE (c.date2 IS NULL OR c.date2 >= NOW()) AND ua.login_alias = '"+SAlias+"'";
            PreparedStatement ps  = con.prepareStatement( query );
            ResultSet rs = ps.executeQuery();
            while ( rs.next() )
               {

                  System.out.println(" actionType == 9 ");
                  String status = rs.getString(1);
                  String ret = "<status>"+status+"</status>";
                  throw new BGException( ret );
               }
         }

по такой же схеме(в конце) пытаюсь вызвать на другой версии, в ошибки оно попадает, а в браузере нет

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 23 июл 2015, 13:39 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
а в лог что попадает?

а BGMessageException работает?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 23 июл 2015, 13:50 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
в лог попадает вот это, конструкция:
Код:
String ret = "ia error";
throw new BGMessageException( ret );

в лог
Код:
ru.bitel.bgbilling.common.BGMessageException: ia error

так же и с
Код:
BGException

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 23 июл 2015, 19:00 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
из экшена должно вываливаться точно вот здесь же это используется почти везде в явном виде:
http://wiki.bitel.ru/index.php/%D0%9F%D ... 0%BE%D0%B2

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 23 июл 2015, 19:01 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
чтобы повторить: нужен конкретный экшен (настройки конфига) и конкретный код, очень желательно чтобы код был минимально возможный, который повторяет ошибку (вернее, её неполучение - типа кидается экзепшен единственной строкой, а в итоге возвращается ничего)

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 07:21 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
dimOn писал(а):
чтобы повторить: нужен конкретный экшен (настройки конфига) и конкретный код, очень желательно чтобы код был минимально возможный, который повторяет ошибку (вернее, её неполучение - типа кидается экзепшен единственной строкой, а в итоге возвращается ничего)

настройка
Код:
dynaction:contract.ActionNewContract=ru.exchange.ActionNewContract


Код:
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.common.BGMessageException;
...
public class ActionNewContract
    extends bitel.billing.server.contract.action.ActionNewContract
{
....
    @Override
    public void doAction()
        throws SQLException, BGException
    {
.....
        if ( actionType == -1 )
        {
            System.out.println( "actionType ==-1" );
            super.doAction();
        }
        else if ( actionType != -1 )
        {
            try
            {
.....
                    if ( actionType == 15 )
                    {
....
                        String ret = "ia error";
                        throw new BGMessageException( ret );
                     }
...
            }
                catch( Exception e )
                {
                    e.printStackTrace();
                }

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 12:29 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Код:
try
{
    ......
    ....
    .....
    throw new BGMessageException( ret );
    .....
}
catch( Exception e )
{
    e.printStackTrace();
}

Здесь нужно пояснять, что наружу никакой Exception вообще не выкидывается? Или после сокращения кода стало всё понятно?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 13:49 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
dimOn писал(а):
Код:
try
{
    ......
    ....
    .....
    throw new BGMessageException( ret );
    .....
}
catch( Exception e )
{
    e.printStackTrace();
}

Здесь нужно пояснять, что наружу никакой Exception вообще не выкидывается? Или после сокращения кода стало всё понятно?

да, я пытался этим кинуть когда небыло ошибки, а просто срабатывало стандартное положение. Я нашел какой конкретно catch срабатывает, прописал туда
Код:
                catch( Exception e )
                {
                    e.printStackTrace();
                    StackTraceElement[] ste = e.getStackTrace();
                    for ( StackTraceElement ster : ste )
                    {
                        trace.append( "\t\t\t\t" + ster.getClassName() + "(" + ster.getFileName() + ":" + ster.getLineNumber() + ")\n" );
                    }

                    message = "код ошибки " + e + "\n\n" + trace.toString() + "\nactionType " + actionType + " AccountId new " + AccountId;
                    ErrorMessages( msg, message );
               String ret = "ia error";
               throw new BGMessageException( ret );
                }

всеравно не отработало

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 14:14 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Вообще какая-то какафония кода. Это другой код? Или что? Он не работает? Или тот что выше?

В общем, если кинуть throw new *Exception* из перегруженного кода - <data status="ok"/> вернуться не может, нужно искать в чём косяк кода перегруженного класса.
Для этого нужно упрощать код и выявлять где в нём ошибка. По коду тому что выше выложен - всё понятно, исключений наружу вообще не кидается. Дальше откуда новый код взялся?

Всё что выделено красным к вопросу вообще не относится, очевидно. Потому это нужно убирать при описании задачи и поиске проблема. Также как и 99.9% строк из пары тысяч, которые в личке были предоставлены. Это называется - найти минимально неработающий код, повторяющий рассматриваемую проблему.
Цитата:
catch( Exception e )
{
e.printStackTrace();
StackTraceElement[] ste = e.getStackTrace();
for ( StackTraceElement ster : ste )
{
trace.append( "\t\t\t\t" + ster.getClassName() + "(" + ster.getFileName() + ":" + ster.getLineNumber() + ")\n" );
}

message = "код ошибки " + e + "\n\n" + trace.toString() + "\nactionType " + actionType + " AccountId new " + AccountId;
ErrorMessages( msg, message );

String ret = "ia error";
throw new BGMessageException( ret );
}


Если код в итоге будет такой:

Код:
public class ActionNewContract
    extends bitel.billing.server.contract.action.ActionNewContract
{
    @Override
    public void doAction()
        throws SQLException, BGException
    {
         throw new BGMessageException( "bla" );
    }
}


и будет не работать как положено - то это ошибка, да. Но такой код будет работать, я уверен. Так нужно выяснить где проблема.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 14:15 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
если написать action, который кидает exception и больше ничего не делает, работает ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 14:19 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
в общем дошел до проблемы
если в коде несколько try catch, то куда бы я не вставлял, даже если именно в тот catch который срабатывает, throw new BGMessageException( ret ); не отрабатывает, если закоментить все предидущие try catch и оставить самый верхний, первый, и в него вставить throw new BGMessageException( ret );, то все работает

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 14:32 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Но нужны то все try catch

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 16:26 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
skyb писал(а):
в общем дошел до проблемы
если в коде несколько try catch, то куда бы я не вставлял, даже если именно в тот catch который срабатывает, throw new BGMessageException( ret ); не отрабатывает, если закоментить все предидущие try catch и оставить самый верхний, первый, и в него вставить throw new BGMessageException( ret );, то все работает


код в студию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 16:42 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
stark писал(а):
skyb писал(а):
в общем дошел до проблемы
если в коде несколько try catch, то куда бы я не вставлял, даже если именно в тот catch который срабатывает, throw new BGMessageException( ret ); не отрабатывает, если закоментить все предидущие try catch и оставить самый верхний, первый, и в него вставить throw new BGMessageException( ret );, то все работает


код в студию.

в личке

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 18:39 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
skyb писал(а):
stark писал(а):
skyb писал(а):
в общем дошел до проблемы
если в коде несколько try catch, то куда бы я не вставлял, даже если именно в тот catch который срабатывает, throw new BGMessageException( ret ); не отрабатывает, если закоментить все предидущие try catch и оставить самый верхний, первый, и в него вставить throw new BGMessageException( ret );, то все работает


код в студию.

в личке


нет..нам попроще бы что-нибудь ..портянки попробуйте в helpdesk послать - может там поизучают .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как работает throw new BGException?
СообщениеДобавлено: 28 июл 2015, 20:14 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
skyb писал(а):
если в коде несколько try catch, то куда бы я не вставлял, даже если именно в тот catch который срабатывает, throw new BGMessageException( ret ); не отрабатывает, если закоментить все предидущие try catch и оставить самый верхний, первый, и в него вставить throw new BGMessageException( ret );, то все работает

try catch по определению глушит все брошенные внутри Exception. он для этого и предназначен.
потому вообще непонятно что и к чему и о чём вообще речь.
в catch тоже можно throw любой Exception и он выкинется наверх и сработать тоже должен, если вышеобёрнутый try catch его не отловит опять же.

проблема в коде явно. нужно упростить,выкинув всякую ненужную шнягу и внимательно изучить вложенности итд.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.051s | 52 Queries | GZIP : On ]