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
    errID = 'MYFUN:BadIndex';
    msg = 'Unable to index into array.';
    baseException = MException(errID,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))
        errID = 'MYFUN:incorrectSize';
        msg = 'Indexing array is too large.';
        causeException2 = MException(errID,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 массив ячеек.

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

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