addCause

Запишите дополнительные причины исключения

Описание

пример

baseException = addCause(baseException,causeException) изменяет существующий MException объект baseException путем добавления causeException к его cause свойство. Ловля получившегося исключения в try/catch оператор делает основное исключение, наряду со всеми добавленными записями причины, доступными, чтобы помочь диагностировать ошибку.

Примеры

свернуть все

Создайте массив и индекс в него с логическим массивом.

A = [13 42; 7 20];
idx = [1 0 1; 0 1 0];

Создайте исключение, которое предоставляет общую информацию об ошибке. Протестируйте массив индекса и добавьте исключения с более подробной информацией об источнике отказа.

try
    A(idx);
catch
    msgID = 'MYFUN:BadIndex';
    msg = 'Unable to index into array.';
    baseException = MException(msgID,msg);
    
    try
        assert(islogical(idx),'MYFUN:notLogical',...
            'Indexing array is not logical.')
    catch causeException
        baseException = addCause(baseException,causeException);
    end
    
    if any(size(idx) > size(A))
        msgID = 'MYFUN:incorrectSize';
        msg = 'Indexing array is too large.';
        causeException2 = MException(msgID,msg);
        baseException = addCause(baseException,causeException2);
    end
    throw(baseException)
end
Unable to index into array.

Caused by:
    Indexing array is not logical.
    Indexing array is too large.

Исследуйте baseException объект.

baseException
baseException = 

  MException with properties:

    identifier: 'MYFUN:BadIndex'
       message: 'Unable to index into array.'
         cause: {2x1 cell}
         stack: [0x1 struct]

Значение cause свойством является 2x1 cellArray.

Исследуйте первую причину исключения.

baseException.cause{1}
ans = 

  MException with properties:

    identifier: 'MYFUN:notLogical'
       message: 'Indexing array is not logical.'
         cause: {0x1 cell}
         stack: [0x1 struct]

Исследуйте вторую причину исключения.

baseException.cause{2}
ans = 

  MException with properties:

    identifier: 'MYFUN:incorrectSize'
       message: 'Indexing array is too large.'
         cause: {}
         stack: [0x1 struct]

Входные параметры

свернуть все

Первичное исключение, содержащее первичную причину и местоположение ошибки, заданной как MException объект.

Связанное исключение, содержащее причину и местоположение ошибки, связанной с baseException, заданный как MException объект.

Смотрите также

| | | | | |

Представленный в R2007b