2011-08-03 68 views
1

我想我的Java腳本拋出,如果有任何異常。問題是,我們在腳本中擴展了一個超類,但是在這個超類中,有一個被稱爲ScriptFailureException的異常,超類在JAR中,我們無法編輯。我們希望阻止該異常被捕獲。是否有可能防止這種異常被捕獲,或者是否有其他方法可以使我們的腳本在這種情況下失敗。我嘗試了System.Exit()等方法,但他們不工作。我們通過TestNG運行我們的腳本。如何解除捕獲的異常

+0

將ScriptFailureException包裝到另一個異常對象中怎麼樣? – Matten

+5

JavaScript還是Java?什麼腳本?什麼Java?這個問題很混亂。 –

+0

好吧,我猜你的意思是*代碼*而不是*腳本*,因爲這使問題變得有意義。 –

回答

0

沒有,除非超類讓你知道ScriptFailureException發生的方式不是拋出它。其他方式之一可以是例如方法調用的空返回值。

+0

dat的wat我們現在正在做。意味着,沒有任何其他解決方案?????? – Dinesh

3

首先,Java不是腳本語言,沒有腳本的概念。您不應該使用術語腳本,而是使用術語「類」,「方法」,「程序」。

要回答你的問題,如果一個方法捕獲到一個異常,那麼這個異常就會被捕獲,而你無法對它做任何事情。不過,您可能會拋出另一種不會被超類方法捕獲的異常類型。

+0

我們正在使用的dat,但如果沒有抓到腳本或類不會因異常而失敗??? – Dinesh

0

Jar代碼捕獲異常時會採取什麼操作?您可以在事件發生後檢測到該行爲嗎?例如,如果Jar代碼寫入日誌,那麼您可以檢查日誌以查看該異常是否記錄在那裏,然後拋出您自己的新異常。

+0

我們現在正在做的dat的wat。意味着,沒有任何其他解決方案????? – Dinesh

0

您可以通過拋出一個錯誤使Java完全失敗。

throw new Error("Oh dear"); 

雖然這很混亂。

嘗試定義自己的異常並拋出。

public class CustomException extends Exception { } 

// somewhere else 
throw new CustomException("Some detail"); 
+0

亞我們已經做了任何其他解決方案?????? – Dinesh

0

一個小技巧就是聲明ScriptFailureExceptionRuntimeException

的延伸,我認爲,這不是做代碼的最佳方式,但它的工作原理。 RuntimeException對象不需要顯式的try/catch塊。

然後,您必須聲明class StcriptFailureException extends RuntimeException

商祺!

+1

如果庫定義了ScriptFailureException本身,則這不起作用。 –

+0

是的。我同意你。我沒有很好的閱讀這部分的問題。在這種情況下,我認爲他可以捕捉到異常並將其他無法克服的異常(自定義異常)拋入catch塊。 – Charliemops

+0

任何其他技巧? – Dinesh