powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: Обработка ошибки при вызове метода
5 сообщений из 5, страница 1 из 1
Perl: Обработка ошибки при вызове метода
    #38795506
stavelot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паршу XML c помощью XML::DOM

Вызываю метод для получения дочернего значения:

Код: php
1.
2.
my @title = $speciesg->getElementsByTagName('title')->item(0)
            ->getFirstChild->getNodeValue;



Но проблема в том, в дереве XML не всегда присутствует нода 'title' и когда ее нету происходит ошибка : Can't call method "getFirstChild" on an undefined value

Мне нужно, что бы когда данной ноды нету, Perl скрипт продолжал работу.
...
Рейтинг: 0 / 0
Perl: Обработка ошибки при вызове метода
    #38795716
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оберни стрёмный код в блок eval ( точка с запятой после закр. фиг. скобки eval обязательна )

Код: perl
1.
2.
3.
4.
5.
6.
eval {
         my @title = $speciesg->getElementsByTagName('title')->item(0)
                              ->getFirstChild->getNodeValue;
};

warn $@ if $@;
...
Рейтинг: 0 / 0
Perl: Обработка ошибки при вызове метода
    #38795722
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavelot,

либо поставить модуль Try *
( в данном случае исключительно из эстетических соображений)

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
use Try::Tiny;
use XML::DOM;

try {
         my @title = $speciesg->getElementsByTagName('title')->item(0)
                              ->getFirstChild->getNodeValue;

} catch { warn "ошибка : $_" };
...
Рейтинг: 0 / 0
Perl: Обработка ошибки при вызове метода
    #38795729
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно и традиционно сделать:
Код: php
1.
2.
3.
4.
5.
6.
7.
my $element = $speciesg->getElementsByTagName('title')->item(0);
my @title;
if ( defined( $element ) ) {
   @title = $element->getFirstChild->getNodeValue;
} else {
   die "все пропало!";
}
...
Рейтинг: 0 / 0
Perl: Обработка ошибки при вызове метода
    #38796357
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА можно и традиционно сделать:
[/src]

можно, если у него один такой тэг.

a если их 20 и на разной глубине, то придется сильно править.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: Обработка ошибки при вызове метода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]