2013-01-19 91 views
2

有什麼辦法可以強制編譯器(註釋或其他)來實現一個java函數永遠不會返回(即總是拋出),以便隨後它不會錯誤地使用它作爲最後一個語句在其他函數返回非void?不返回java函數註釋

這裏有一個簡單的/製造的例子:

int add(int x, int y) { 
    throwNotImplemented(); // compiler error here: no return value. 
} 

// How can I annotate (or change) this function, so compiling add will not yield an error since this function always throws? 
void throwNotImplemented() { 
    ... some stuff here (generally logging, sometimes recovery, etc) 
    throw new NotImplementedException(); 
} 

謝謝。

+1

目前尚不清楚。你在嘗試什麼_exactly_? – Swapnil

+0

我不明白是什麼問題,你想要做什麼? – Maroun

+0

我想弄清楚throwNotImplemented需要做什麼修改(同時保持它的功能完整),這樣add函數可以按原樣編譯,但是沒有錯誤。 – daniel

回答

3

不,這是不可能的。

但是請注意,您可以輕鬆地工作,它圍繞如下:

int add(int x, int y) { 
    throw notImplemented(); 
} 

Exception notImplemented() { 
    ... some stuff here (generally logging, sometimes recovery, etc) 
    return new NotImplementedException(); 
} 
0

爲什麼不直接從未實現的方法中拋出?

int add(int x, int y) { 
    throw new UnsupportedOperationException("Not yet implemented"); 
} 

即使該方法沒有返回int,這也可以很好地編譯。它使用standard JDK exception,這意味着在這種情況下使用。

+0

謝謝你回答,@assylias。 throwNotImplemented方法需要做額外的操作(日誌記錄,恢復等),這意味着只需要添加'add'是不夠的。 將這些行爲添加到'add'方法會導致重複(即,'multiply'方法也需要它們)。 – daniel