2015-03-21 1 views
0

У меня есть следующий фрагмент кода, который я анализирую с ASMЧто ASM метод посетителей вызывается для аннотации типа улова

try{ 
    } catch (@TypeAnno7 RuntimeException re){ 

    } 

Я не могу найти правильный метод, который вызывается для аннотации. Я думал, что MethodVisitor.visitTryCatchAnnotation выполнит трюк, но он не будет вызван.

Итак: что такое правильный метод? И для какого типа кода вызываемый метод называется?

+0

Это буквально код? Если ваш объект try пуст, компилятор java фактически не будет выпустить какой-либо код для try/catch вообще (отметьте 'javap -c'). Добавьте код в тело try, чтобы убедиться, что это имеет значение. –

+0

Aaaargh, глупость болит. Хочешь сделать ответ, чтобы я мог принять его? –

+0

Готово, рад, что это сработало. –

ответ

3

Компилятор Java не генерирует байт-код для try/catch, если тело try не содержит какой-либо код (в противном случае блок catch никогда не может быть фактически запущен, так что это форма устранения мертвого кода), которую вы можете проверить с помощью javac -p. Добавьте код в тело try, а затем вызовите приглашениеTryCatchAnnotation.