exponenta event banner

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