2013-06-19 2 views
4

Я знаю, что нет встроенного способа делать утверждения try-catch в C, но MATLAB облегчил любую функцию try-catch для файлов MEX? Я пытался использовать Longjmp и Setjmp способом, описанным в http://www.di.unipi.it/~nids/docs/longjump_try_trow_catch.html, но я не был успешным. Кто-нибудь еще понял путь?Есть ли способ сделать утверждения try-catch в mex-файлах?

+0

Прошло некоторое время, но, похоже, я помню, как пытался запустить mex dll через визуальную студию, а затем указать matlab.exe как программу для запуска. Кроме того, вы можете прикрепить к matlab.exe из VS и загрузить свои скомпилированные символы отладки mex. –

+1

Откуда возникает «ошибка»? C не имеет понятия об исключениях, так что именно вы хотите поймать? – wakjah

+0

@robguinness: у вашего URL есть опечатка: [http://www.di.unipi.it/~nids/docs/longjump_try_trow_catch.html](http://www.di.unipi.it/~nids/docs/ longjump_try_trow_catch.html). Кроме того, вы выяснили, почему метод 'setjmp.h' не работает для вас? – horchler

ответ

3

Вы можете использовать write your MEX-files in C++ и использовать the C++ exception handling.

+0

Ум ... заметьте, что вопрос задан «в C» .... – robguinness

+0

@robguinness: Я знаю. Тем не менее, во многих настройках люди могут переключаться на C++ без особых проблем, поэтому я думаю, что информация в этом контексте ценна. Конечно, вы свободны, чтобы не согласиться с моим ответом :) Я не знаю каких-либо специфичных для MEX чистых механизмов обработки ошибок C. –

+0

Это правда. Я думаю, если в C нет возможности сделать это, я, вероятно, воспользуюсь вашим предложением. В ожидании увидеть, есть ли другие ответы, хотя ... – robguinness

Смежные вопросы