1 19 20 package org.netbeans.modules.debugger.jpda.breakpoints; 21 22 import com.sun.jdi.ReferenceType; 23 import com.sun.jdi.VMDisconnectedException; 24 import com.sun.jdi.event.Event; 25 import com.sun.jdi.event.ExceptionEvent; 26 import com.sun.jdi.request.ExceptionRequest; 27 import org.netbeans.api.debugger.jpda.ClassLoadUnloadBreakpoint; 28 import org.netbeans.api.debugger.jpda.ExceptionBreakpoint; 29 30 import org.netbeans.api.debugger.Session; 31 import org.netbeans.modules.debugger.jpda.JPDADebuggerImpl; 32 33 38 public class ExceptionBreakpointImpl extends ClassBasedBreakpoint { 39 40 41 private ExceptionBreakpoint breakpoint; 42 43 44 public ExceptionBreakpointImpl (ExceptionBreakpoint breakpoint, JPDADebuggerImpl debugger, Session session) { 45 super (breakpoint, debugger, session); 46 this.breakpoint = breakpoint; 47 set (); 48 } 49 50 protected void setRequests () { 51 setClassRequests ( 52 new String [] {breakpoint.getExceptionClassName ()}, 53 new String [0], 54 ClassLoadUnloadBreakpoint.TYPE_CLASS_LOADED 55 ); 56 checkLoadedClasses (breakpoint.getExceptionClassName ()); 57 } 58 59 protected void classLoaded (ReferenceType referenceType) { 60 try { 61 ExceptionRequest er = getEventRequestManager (). 62 createExceptionRequest ( 63 referenceType, 64 (breakpoint.getCatchType () & 65 ExceptionBreakpoint.TYPE_EXCEPTION_CATCHED) != 0, 66 (breakpoint.getCatchType () & 67 ExceptionBreakpoint.TYPE_EXCEPTION_UNCATCHED) != 0 68 ); 69 addEventRequest (er); 70 } catch (VMDisconnectedException e) { 71 } 72 } 73 74 public boolean exec (Event event) { 75 if (event instanceof ExceptionEvent) 76 return perform ( 77 breakpoint.getCondition (), 78 ((ExceptionEvent) event).thread (), 79 ((ExceptionEvent) event).location().declaringType(), 80 ((ExceptionEvent) event).exception () 81 ); 82 return super.exec (event); 83 } 84 } 85 86 | Popular Tags |