2011-04-20 109 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