практика обработки исключений при написании классов - PullRequest
0 голосов
/ 15 марта 2012

Когда вы пишете класс, который выдает исключение, будет ли хорошей идеей обработать исключение внутри класса?Или лучше позволить пользователю класса обрабатывать его в основной программе? Например,

, это хорошая идея написать класс со следующими параметрами:

class Queue{
    Object Queue<Object>::getFront( )
    {
        try
        {
            if( isEmpty( ) )
                throw Underflow( );
        } catch(Underflow E)
        {
            cerr<<"caught underflow\n";
            return null;
        }
        return queuearray[ front ];
    }
}

илилучше просто иметь

Object Queue<Object>::getFront( )
{
    if( isEmpty( ) )
        throw Underflow( );
    return queuearray[ front ];        
}

и затем позволить пользователю реализовать исключение в основном или везде, где вызывается функция?

1 Ответ

0 голосов
/ 15 марта 2012

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

Помните, что вы должны использовать исключения только в тех случаях, когда обстоятельства действительно исключительные - вещи вне контроля приложения,Приведенный выше пример не совсем идеален.Если вы выбрасываете исключение, зачем его ловить в строке ниже?Просто сделай

class Queue{
Object Queue<Object>::getFront( )
{
    try
    {
        if( isEmpty( ) )
           return null;
    }
    return queuearray[ front ];
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...