Как может я становиться довольным использование XML:: Ветка?

Существуют, конечно, обстоятельства, где нормально ловить определенное исключение и ничего не делать. Вот тривиальный пример:

    public FileStream OpenFile(string path)
    {
        FileStream f = null;
        try
        {
            f = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);
        }
        catch (FileNotFoundException)
        {
        }
        return f;
    }

Вы могли также записать методу этот путь:

    public FileStream OpenFile(string path)
    {
        FileStream f = null;
        FileInfo fi = new FileInfo(path);
        if (fi.Exists)
        {
            f = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);                
        }
        return f;
    }

В этом случае, ловя исключение (очень) незначительно более безопасно, поскольку файл мог быть удален между временем, Вы проверяете на его существование и время, Вы открываете его.

существуют причины не , чтобы сделать это, уверенное. В.NET исключения являются в вычислительном отношении дорогими, таким образом, Вы хотите избежать чего-либо, что бросает многие из них. (В Python, где исключения являются дешевыми, это - общая идиома для использования исключений, чтобы сделать, вещам нравится, убегают из циклов.)

, Но это игнорирует конкретный исключение. Этот код:

catch
{
}

непростительно.

нет никакого серьезного основания не поймать определенное введенное исключение, которое код в try блок собирается выдать. Первой причиной, что наивный разработчик дает для ловли исключений независимо от типа, "Но я не знаю, какое исключение могло бы быть выдано", является вид ответа на вопрос.

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

6
задан Peter Mortensen 1 January 2010 в 17:27
поделиться

1 ответ

Ознакомьтесь с документацией XML :: Twig для start_tag_handlers :

Обработчики вызываются с двумя параметрами: веточкой и элементом. В этот момент элемент пуст, но его атрибуты создаются.

Во время вызова start_tag_handlers текстовое содержимое еще даже не отображается, поскольку анализируется начальный тег (например, </code>, а не конечный тег <code> ) только что завершился.

Причина, по которой end_tag_handlers не работают текст элемента снабжения, вероятно, предназначен для симметрии :-).

Вы, вероятно, захотите использовать вместо этого twig_handlers :

my $twig = XML::Twig->new(
    twig_handlers => {
        'apps/title' => \&kicks,
        'apps/logs' => \&bye
    },
    twig_roots => {
        'apps' => \&app
    },
);

Результат:

---kicks--- 
watch 
bye 
csv 
---app--- 
watchset,start,00:00,alart,endcsv
---kicks--- 
machine 
bye 
dump 
---app--- 
machinedown,select,vol_100,check,line,enddump
9
ответ дан 10 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: