code: private boolean isExceptionHandled(String ex) {
          try {
              JavaClass thrownEx = Repository.lookupClass(ex);
              // First look at the throws clause
              ExceptionTable et = getMethod().getExceptionTable();
              if (et != null) {
                  String[] throwClauseExNames = et.getExceptionNames();
                  for (String throwClauseExName : throwClauseExNames) {
                      JavaClass throwClauseEx = Repository.lookupClass(throwClauseExName);
                      if (thrownEx.instanceOf(throwClauseEx)) {
                          return true;
                      }
                  }
              }
              // Next look at the try catch blocks
              CodeException[] catchExs = getCode().getExceptionTable();
              if (catchExs != null) {
                  int pc = getPC();
                  for (CodeException catchEx : catchExs) {
                      if ((pc >= catchEx.getStartPC()) && (pc <= catchEx.getEndPC())) {
                          int type = catchEx.getCatchType();
                          if (type != 0) {
                              String catchExName = getConstantPool().getConstantString(type, Const.CONSTANT_Class);
                              JavaClass catchException = Repository.lookupClass(catchExName);
                              if (thrownEx.instanceOf(catchException)) {
                                  return true;
                              }
                          }
                      }
                  }
              }
          } catch (ClassNotFoundException cnfe) {
              bugReporter.reportMissingClass(cnfe);
          }
          return false;
      }
docs: returns whether this exception is handled either in a try/catch or throws
  clause at this pc
  
  @param ex the name of the exception
  
  @return whether the exception is handled