2009-11-24 82 views
1

我期待在Java中拋出一般的ExceptionJava中的一般例外

「情況」基本上是如果遇到空行,拋出異常並忽略空行。

現在,我來自C#的背景,所以我只會拋出一個正常的Exception。在Java中,有沒有一個?我似乎無法找到它。

我知道我可以斷言,但是這會使用AssertionException正確解決問題嗎?

感謝,

凱爾


編輯:

感謝您的答案。不幸的是,這是我自己的愚蠢,讓我錯過了Exception,這是我在檢查之前發現的。我接受了Bills針對斷言評論的回答,考慮到由於太多的投票,我無法刪除該問題(在10秒鐘內,我可能會添加,嘿嘿)。

回答

6

Java有一個普通的Exception類,但你幾乎從不想拋出它。我更願意擴展它(或另一種異常類型),以制定更具體的例外以適應您的具體情況。

此外,您不應該使用斷言來代替在您的代碼中拋出異常。斷言可能被禁用(並且默認情況下被禁用),因此當代碼由最終用戶運行時,不能指望它們在那裏。 Sun的文章Programming With Assertions中有很多很好的信息。

+0

我同意。我只需要針對這種特定場景的簡單類型例外。 – 2009-11-24 18:59:38

4

我想知道爲什麼你需要在第一個地方拋出異常。如果您的目標是忽略空白行,那麼if聲明聽起來像是更好的解決方案。不要將異常用作正常流量控制的替代品。

+0

確實。這是爲了學習的目的。我絕不會爲這種容易避免的生產問題拋出異常。整個例外情況仍然適用於特殊情況。 – 2009-11-24 19:01:56

+0

,特別是它們的性能價格... – 2009-11-24 19:07:01

0

Bozho是對的。但更完整的答案是,在C#中,所有異常都必須繼承System.Exception,而在Java中,您可以拋出任何繼承自java.lang.Throwable的東西。 java.lang.Exception繼承java.lang.Throwable,並且是Java中使用的大多數異常的超類。不過,您可能想要拋出一個java.lang.Error,或者創建您自己的可拋類來使用。

否則,語義都非常相似:

throw new Exception(); 

然而,大多數時間異常應該只在特殊情況下被拋出。如果您希望接收空行,並期望忽略它們,則代碼應該處理此情況而不會拋出異常。

+2

-1 - 您絕對不應該從應用程序代碼中明確地拋出錯誤或錯誤的子類型。如果你想要一個未經檢查的異常,那麼有更多可接受的方法來實現它。 – 2009-11-24 23:53:27

+0

我的理解是,通常認爲拋出未經檢查的異常通常被認爲是不好的做法 - 那麼爲什麼拋出Error比拋出RuntimeException更糟?你將不得不原諒我 - 當談到Java時,我有些不知所措。 – Dathan 2009-11-25 17:07:30

+0

這根本不是壞習慣 - 用於檢查方法輸入的一些最常見的異常(例如IllegalArgumentException)未被選中。在C#中,所有異常都未被選中。 – ayahuasca 2015-08-25 17:21:49