2011-04-20 101 views
2

可能重複:
how to use Java-style throws keyword in C#?拋出異常的C#

我對此刻的工作實習,做C#。我距離完成uni的課程還有1年時間,我們主要教授Java。

如果我要扔在Java中checked異常,我會用:

public void saveToFile(String fileName) throws IOException 

有沒有在C#中類似的語法這樣做,但我自己的自定義異常?

謝謝

回答

0

Noop。你只需要catchthrow。或者將其包裝成一個新的例外和throw

public void saveToFile(string fileName) 
{ 
    try 
    { 
     // your code 
    } 
    catch(Exception ex) 
    { 
     throw; 
     //or: throw new Exception("Whoops", ex); 
    } 
} 
+1

哎呀,沒有。永遠不要做'拋出'。只要'扔'就夠了。如果重新拋出'ex',則會丟失堆棧跟蹤。 – 2011-04-20 08:17:50

+0

@Mike,好點!更改了代碼。 – 2011-04-20 08:21:36

+0

真棒! Downvote縮回。 – 2011-04-20 08:23:39

4

在c#中,你不會聲明函數可能拋出的異常。您正式聲明函數:

public void saveToFile(string fileName) { 
    .... 
} 

拋出異常很簡單。有許多預定義的異常(如System.IO.IOException),它可以拋出:

using System.IO 

... 

public void saveToFile(* string fileName) { 

    ... 
    throw new IOException() 
} 

如果你想拋出一個自定義異常,你必須聲明它,並確保它從系統的派生。異常類。你的異常類可以有你想要的任何構造函數,屬性或成員。例如

public class MyException :Exception 
{ 
    public int code { get; set; } 
    public MyException(int c) { code = c; } 
} 

然後,在你的代碼,你會簡單地拋出它的實例:

... 
throw new MyException(666); 
+0

,並可能覆蓋異常類中的ToString;) – ricki 2011-04-20 07:35:24