Реклама:

3.5.5. Обработка ошибок

Об ошибках, которые происходят в течение выполнения m-функции или в течение преобразования данных, сообщает стандартное исключение Java. Оно включает ошибки во время выполнения программы MATLAB, а также ошибки в m-коде. Есть два типа исключений: исключения MWException и общие исключения.

Обработка исключений MWException

Исключения типа MWException должны быть объявлены пунктом throws языка Java. Компоненты Java Builder поддерживают одно исключение с проверкой: com.mathworks.toolbox.javabuilder.MWException. Этот класс исключения наследует java.lang.Exception и вызывается каждым методом Java, созданным Компилятором MATLAB для сообщения о том, что ошибка произошла в течение вызова. Все нормальные ошибки во время выполнения программы MATLAB, так же как созданные пользователем ошибки (например, ошибка запроса в m-коде) проявляются как MWExceptions.

Интерфейс Java для каждой m-функции содержит объявление о запуске MWException использованием пункта throws. Например, рассмотренная выше m-функция makesqr, имеет следующие интерфейсы:

public Object[] makesqr(int nargout, Object x) throws MWException

Можно использовать два способа обработки ошибок. Покажем их на примерах.

Обработка исключения в вызванной функции. Фрагмент кода getprimes обрабатывает исключение непосредственно и не должен включить пункт throws в начале.

public double[] getprimes(int n)

{

myclass cls = null; Object[] y = null;

try

{

cls = new myclass();

y = cls.myprimes(1, new Double((double)n)); return (double[])((MWArray)y[0]).getData();

}

catch (MWException e)

{

System.out.println("Exception: " + e.toStringO); return new double[0];

}

}

Отметим, что в этом случае программист сам решает, как возвратить что-нибудь разумное из метода в случае ошибки.

Обработка исключения в вызывающей функции. В следующем фрагменте кода, метод, который вызывает myprimes объявляет, что он вызывает MWException:

public double[] getprimes(int n) throws MWException

{

myclass cls = null; Object[] y = null; try

{

cls = new myclass();

y = cls.myprimes(1, new Double((double)n)); return (double[])((MWArray)y[0]).getData();

}

finally

{

MWArray.disposeArray(y); if (cls != null) cls.dispose();

}

}

Обработка общих исключений

Это исключения Java, которые не объявляются явно пунктом throws. Классы API MWArray все производят такие исключения. Следующие исключения могут быть вызваны MWArray: java.lang.RuntimeException, java.lang.ArrayStoreException, java.lang.NullPointerException, java.lang.IndexOutOfBoundsException и java.lang.NegativeArraySizeException. Этот список представляет наиболее вероятные исключения. Другие могут быть добавлены в будущем. Для информации относительно исключений, которые могут произойти для каждого метода класса MWArray и его подкласса, см. документацию: Using MWArray Classes.

Захват общих исключений. Легко модифицировать пример getprimes для захвата любого исключения, которое может произойти в течение вызова метода и преобразования данных. Нужно только заменить пункт catch, а именно, строку catch (MWException e) заменить на строку catch (Exception e)


⇐ Предыдущая страница| |Следующая страница ⇒