![](/img/trans.png)
[英]How can I solve this problem? “Error executing tag <export:formats>: groovy.lang.MissingMethodException: ”
[英]Why Can't I catch Groovy's MissingMethodException?
我正在使用一種靜態方法進行異常處理。 我已經發現了MissingMethodException(通過反復試驗),但是當我編寫代碼來捕獲它時,Grails 2.3.11忽略了catch塊。 甚至沒有使用默認的Exception。 為什么沒有捕獲到異常?
package utility
import java.text.SimpleDateFormat
class DateUtility {
static String getGrailsDefaultDate(String datetm) {
def format = new SimpleDateFormat("YYYYMMddHHmmss")
try{
def date = format.parse(datetm)
date = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").format(date)
datetm = date.toString()
}
catch(IllegalArgumentException iae){
datetm = "An error occured retrieving the date"
}
catch(NullPointerException npe){
datetm = "A date was not provided"
}
catch(java.text.ParseException pe){
datetm = "Unparseable date"
}
catch(groovy.lang.MissingMethodException mme){
datetm = "A missing method occured"
}
catch(Exception e){
datetm = "default exception"
}
return datetm
}
}
這是應該引發缺少的方法異常的調用:
DateUtility.getGrailsDefaultDate(1)
為什么沒有捕獲到異常?
您的catch
塊將僅捕獲從try
塊引發的異常。 在try
塊中沒有會引發MissingMethodException
表達式,因此捕獲MissingMethodException
catch
塊將不會被調用。 這一切看起來都按設計工作。
如果將DateUtility.getGrailsDefaultDate(1)
放在一個try
塊中,該try
塊具有與catch
塊相關聯的catch
塊,該catch
塊會捕獲MissingMethodException
,那么將調用該catch
塊。
嘗試這個...
class DateUtility {
static String getGrailsDefaultDate(String datetm) {
def format = new SimpleDateFormat("YYYYMMddHHmmss")
try{
def date = format.parse(datetm)
date = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").format(date)
datetm = date.toString()
}
catch(IllegalArgumentException iae){
datetm = "An error occured retrieving the date"
}
catch(NullPointerException npe){
datetm = "A date was not provided"
}
catch(java.text.ParseException pe){
datetm = "Unparseable date"
}
catch(groovy.lang.MissingMethodException mme){
datetm = "A missing method occured"
}
catch(Exception e){
datetm = "default exception"
}
return datetm
}
static void main(args) {
try {
DateUtility.getGrailsDefaultDate(1)
} catch (MissingMethodException mme) {
println 'I Caught The Exception!'
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.