Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пакет perlembed: проблема с исключениями 
:(
    Опции темы
Arlekin
Дата 24.10.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.10.2006

Репутация: нет
Всего: нет



Добрый день.
Столкнулся я со следующей проблемой при написании программы. Есть некий скрипт который при некоторых данных 100% выбрасывает исключение при запуске из perl (perl test.pl). Сам скрипт приведен ниже:
sub register_vm
{
    my ($config) = @_;
    
    my $connect_params = VMware::VmPerl::ConnectParams::new();

    # Establish a persistent connection with server
    my $server = VMware::VmPerl::Server::new();
    if (!$server->connect($connect_params)) 
    {
        my ($error_number, $error_string) = $server->get_last_error();
        die "Could not connect to server: Error $error_number: $error_string\n";
    }
    
    if (!$server->register_vm($config))
    {
        my ($error_number, $error_string) = $server->get_last_error();
        die "Could not register of VM $config: Error $error_number: $error_string\n";
    }
    
    undef $server;
}

Для использования его из C++ была написана функция следующего вида:

bool PerlWrapper::PerlRegisterVm(char* config, char* error)
{
  bool bRet = true;
  dSP;
  ENTER;
  SAVETMPS;
  PUSHMARK(SP);
  XPUSHs(sv_2mortal(newSVpv(config, 0)));
  PUTBACK;
  perl_call_pv("register_vm", G_DISCARD|G_EVAL);
  SPAGAIN;
  if(SvTRUE(ERRSV))
  {
     strcpy(error, SvPV(ERRSV, PL_na));
    bRet = false;
  }
  PUTBACK;
  FREETMPS;
  LEAVE;
  return bRet;
}

Проблема в том что при заведомо неверных данных, управление не приходит в блок обработки ошибки. 
Подскажите в чем может быть проблема. Буду благодарен за любые комментарии.
PM MAIL   Вверх
amg
Дата 25.10.2006, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Код

sub register_vm
{
    my ($config) = @_;
    .........
Такая конструкция запишет в $config только 1-й из параметров, с которыми &register_vm вызывается. Так и было задумано?
PM MAIL   Вверх
Arlekin
Дата 25.10.2006, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.10.2006

Репутация: нет
Всего: нет



Да, так и было задумано.
PM MAIL   Вверх
arto
Дата 25.10.2006, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



5.6 у мну нет, но в 5.8 вызывать надо с G_EVAL и проверять $@

Это сообщение отредактировал(а) arto - 25.10.2006, 09:40
PM MAIL ICQ   Вверх
Arlekin
Дата 25.10.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.10.2006

Репутация: нет
Всего: нет



Он и вызывается с G_EVAL: perl_call_pv("register_vm", G_DISCARD|G_EVAL);
А проверка $@ это аналог SvTRUE(ERRSV).

PM MAIL   Вверх
arto
Дата 25.10.2006, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



значит с ++ проблема.
попробуйте просто cc.

во всяком случае у меня такое работает, перехват die.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.