- errcode = xbt_dictelm_get_ext((*cursor)->head, *key, key_len, data);
- if (errcode == mismatch_error) {
- xbt_dict_cursor_free(cursor);
- return FALSE;
+ TRY {
+ *data = xbt_dictelm_get_ext((*cursor)->head, *key, key_len);
+ } CATCH(e) {
+ if (e.category == mismatch_error) {
+ xbt_dict_cursor_free(cursor);
+ xbt_ex_free(e);
+ return FALSE;
+ }
+ RETHROW;