2010-07-15 3 views
0

частной Строка getEmailTemplateWithActualValueForAccount (шаблон String, экаунт) бросает IllegalArgumentException, IllegalAccessException, InvocationTargetException {исключения в Java

Map<String,String> map = new HashMap<String, String>(); 
    List<String> listTags = new ArrayList<String>(); 
    Map<Method, String> methodList = new HashMap<Method, String>(); 

    int startIndex=0; 
    int endIndex=0; 

    for(int i=0; i<template.length(); i++) 
    { 
     char ch = template.charAt(i); 
     if(ch=='$') 
      startIndex = i+1; 
     if(ch=='#') 
     { 
      endIndex = i+1; 
      listTags.add(template.substring(startIndex,endIndex)); 
     } 

    } 

    Method[] methods = Account.class.getMethods(); 

    for (Method method : methods) { 
     String methodName = method.getName(); 
     if(method.getName().startsWith("get")) 
     { 
      methodList.put(method, methodName.substring(3,methodName.length()).toUpperCase()+"#"); 
     } 
    } 

    Set<Method> methodKeySet = methodList.keySet(); 
    for (Method method : methodKeySet) { 
     for (String string : listTags) { 

      if(methodList.get(method).equals(string)) 
      { 
       try{ 
        Object obj = method.invoke(account, null); 
        if(obj!=null) 
         map.put(string, obj.toString()); 
       }catch(NullPointerException e){ 
       } 
      } 
     } 
    } 

    final StringBuilder list = new StringBuilder("\\$("); 
    for(final String key: map.keySet()) 
    { 
     list.append(key); 
     list.append("|"); 
    } 
    list.append("[^\\s\\S])"); 
    Pattern pattern = Pattern.compile(list.toString()); 
    Matcher matcher = pattern.matcher(template); 


    final StringBuffer stringBuffer = new StringBuffer(); 
    while(matcher.find()){ 
     final String string = matcher.group(1); 
     matcher.appendReplacement(stringBuffer, map.get(string)); 
    } 
    matcher.appendTail(stringBuffer); 

    return stringBuffer.toString(); 
} 

я получил исключение в строке кода «объект Obj = method.invoke (счет, нуль) ;» Код отлично работает, но поскольку этот код находится в планировщике, он будет создавать журнал каждые 20 секунд на сервере jboss.

+1

Вы получите лучший ответ, если вы добавите контекст к своему вопросу. У вас есть код, который его бросает? Если так, разместите его. Вы беспокоитесь о том, чтобы поймать его? Если да, то какие методы бросают это, что вас беспокоит? – corsiKa

+0

Не могли бы вы предоставить свой код, который выбрасывает это исключение? – Longball27

+0

... так что код НЕ отлично работает, не так ли? Просто потому, что компилируется код, он не работает так, как вы этого хотели. Очевидно, что в этом случае это не так, поэтому на самом деле это не «отлично работает». – polygenelubricants

ответ

0

Метод вызова метода генерирует исключение InvocationTargetException «если базовый метод генерирует исключение», в соответствии с Javadoc. Поэтому вам лучше изучить метод, который вы вызываете, чтобы выяснить, почему он выбрасывает исключение. Проверьте трассировку стека исключений для основной причины.

0

Вместо того, чтобы ловить NullPointerException, вы должны поймать InvocationTargetException и проверить завернутое исключение.

Смежные вопросы