![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Arlekin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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; } Проблема в том что при заведомо неверных данных, управление не приходит в блок обработки ошибки. Подскажите в чем может быть проблема. Буду благодарен за любые комментарии. |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
|
|||
|
||||
| Arlekin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.10.2006 Репутация: нет Всего: нет |
Да, так и было задумано.
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
5.6 у мну нет, но в 5.8 вызывать надо с G_EVAL и проверять $@
Это сообщение отредактировал(а) arto - 25.10.2006, 09:40 |
|||
|
||||
| Arlekin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.10.2006 Репутация: нет Всего: нет |
Он и вызывается с G_EVAL: perl_call_pv("register_vm", G_DISCARD|G_EVAL);
А проверка $@ это аналог SvTRUE(ERRSV). |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
значит с ++ проблема.
попробуйте просто cc. во всяком случае у меня такое работает, перехват die. |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |