本文整理匯總了Java中org.objectweb.asm.commons.GeneratorAdapter.visitTryCatchBlock方法的典型用法代碼示例。如果您正苦於以下問題:Java GeneratorAdapter.visitTryCatchBlock方法的具體用法?Java GeneratorAdapter.visitTryCatchBlock怎麽用?Java GeneratorAdapter.visitTryCatchBlock使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類org.objectweb.asm.commons.GeneratorAdapter
的用法示例。
在下文中一共展示了GeneratorAdapter.visitTryCatchBlock方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: wrapCodeToMakeItSafe
import org.objectweb.asm.commons.GeneratorAdapter; //導入方法依賴的package包/類
/**
* Wrap the generated code in safe try-catch block.
*
* It creates an equivalent bytecode:
* <pre>
* <code>
* try {
* // Generated code will be here
* } catch (Throwable t) {
* // Ignore
* }
* </code>
* </pre>
*/
public static void wrapCodeToMakeItSafe(GeneratorAdapter mv, Runnable generatedCode) {
if (true) {
// TODO fix it
generatedCode.run();
return;
}
// Create labels and configure try-catch blocks
Label tryLabel = mv.newLabel();
Label catchLabel = mv.newLabel();
Label endLabel = mv.newLabel();
mv.visitTryCatchBlock(tryLabel, catchLabel, catchLabel, null);
// Start try block
mv.mark(tryLabel);
// === GENERATED CODE ===
generatedCode.run();
// === GENERATED CODE ===
// If code is executed successfully, go to the end
mv.goTo(endLabel);
// Start catch block
mv.mark(catchLabel);
// Just ignore this exception
mv.pop();
mv.mark(endLabel);
}
示例2: SynchronizedMethodTransformer
import org.objectweb.asm.commons.GeneratorAdapter; //導入方法依賴的package包/類
SynchronizedMethodTransformer(GeneratorAdapter mv,
String className, String methodName, String fileName, int access, int classVersion)
{
super(mv, className, methodName, fileName);
this.className = className;
this.classVersion = classVersion;
this.isSynchronized = (access & ACC_SYNCHRONIZED) != 0;
this.isStatic = (access & ACC_STATIC) != 0;
if (isSynchronized) {
mv.visitTryCatchBlock(tryLabel, catchLabel, catchLabel, null);
}
}