@ Override public void sawOpcode ( int seen ) { try { stack . precomputation ( this ) ; int pc = getPC ( ) ; CodeException ex = catchHandlerPCs . get ( Integer . valueOf ( pc ) ) ; if ( ex != null ) { int endPC ; if ( ( seen == Const . GOTO ) || ( seen == Const . GOTO_W ) ) { endPC = this . getBranchTarget ( ) ; } else { endPC = Integer . MAX_VALUE ; } ConstantPool pool = getConstantPool ( ) ; ConstantClass ccls = ( ConstantClass ) pool . getConstant ( ex . getCatchType ( ) ) ; String catchSig = ccls . getBytes ( pool ) ; CatchInfo ci = new CatchInfo ( ex . getHandlerPC ( ) , endPC , catchSig ) ; catchInfos . add ( ci ) ; } updateEndPCsOnCatchRegScope ( catchInfos , pc , seen ) ; removeFinishedCatchBlocks ( catchInfos , pc ) ; if ( seen == Const . ATHROW ) { processThrow ( ) ; } else if ( ( seen == Const . IRETURN ) && isBooleanMethod && ! hasValidFalseReturn && ( stack . getStackDepth ( ) > 0 ) ) { processBooleanReturn ( ) ; } } finally { stack . sawOpcode ( this , seen ) ; } }
overrides the visitor to find catch blocks that throw runtime exceptions