2013-05-08 55 views
-1

我有一個static方法:代碼在try塊沒有運行第二次

public static String languageDetection(String input) { 
    String lang = null; 
    try { 
     DetectorFactory.loadProfile(PROFILE_PATH); 
     Detector detector = DetectorFactory.create(); 
     detector.append(input); 
     lang = detector.detect(); 
    } catch (LangDetectException e) { 
     // LoggerSimple.warn("LangDetectException" + e.getMessage(), LanguageDetection.class); 
    } 
    if (lang!=null) 
    return language.valueOf(lang).getLanguage(); 
    else return lang; 
} 

,我在我的主要方法兩次調用它:

LanguageDetection.languageDetection("hellooooooooo"); 
    LanguageDetection.languageDetection("this is an english text"); 

但第二次時輸入languageDetection方法它不會輸入try塊。

有沒有人知道爲什麼?

+4

你怎麼知道塊中的代碼不被執行兩次?你用調試器試過了嗎? – 2013-05-08 06:40:49

+2

你怎麼知道'try'塊沒有被輸入? – HonkyTonk 2013-05-08 06:40:59

+0

是的,我調試打印 – zsh 2013-05-08 06:41:57

回答

0

Line DetectorFactory.loadProfile(PROFILE_PATH);看似可疑,也許它拋出一個異常,如果它被稱爲兩次,然後它會像儘量不要執行

+0

是在這行後它退出嘗試塊並繼續從if(lang!= null)行 – zsh 2013-05-08 06:54:06

+1

所以有你的答案。它執行try塊兩次,但第二次拋出異常。取消註釋: LoggerSimple.warn(「LangDetectException」+ e.getMessage(),LanguageDetection.class); 至少你會看到異常。 並且不要再寫空的catch塊。這是一個很糟糕的做法。 – timoras 2013-05-08 08:25:30

相關問題