【问题标题】:How do i throw an exception explicitly in c#?如何在 C# 中显式抛出异常?
【发布时间】:2011-09-03 17:32:35
【问题描述】:

在 Java 中,我可以显式指定方法抛出异常,例如:

public void read() throws IOException{}

c# 相当于什么?

抛出自定义异常的最佳做法是什么?

我已经使它们可序列化并提供了流式上下文。

【问题讨论】:

  • 不,这不是在 Java 中引发异常的方式。这就是你声明一个抛出异常的方法的方式。
  • 那是一个异常规范。它被广泛认为是一个错误,C# 没有它并且在 C++ 中已被弃用。
  • 我的错我的意思是我如何声明一个在 C# 中引发异常的方法......我道歉......
  • oki.so 异常规范是一个坏主意。现在例如那么我如何要求调用者处理由他的错误参数引发的异常?
  • throw new Exception() -> 抛出异常 2 调用者。 throw new ArgumentException() -> 框架中的标准。或者你可以自定义这个

标签: c# exception-handling


【解决方案1】:

您指的是引发异常的代码的实际文档

阅读讨论这个问题的主题:How to document thrown exceptions

【讨论】:

  • @ashutosh 那你想要什么?在 C# 中,您只能记录方法抛出的异常。您不能将它们作为方法签名的一部分。即没有办法让编译器告诉方法的调用者他没有处理特定的异常。他可以阅读文档(如果存在)或在运行时弄清楚
  • @Rune FS,@liortal 是的,我仔细查看了 C# 的异常规范,看来我只需要在文档中指定我的方法可能抛出的异常并让调用者处理它.感谢您的帮助。
【解决方案2】:

MSDN 中名为Exceptions and Exception Handling 的主题详细介绍了Creating and Throwing Exceptions

但是,异常规范不像 Java 那样是 C# 语言的一部分。您必须依靠文档来告诉 API 的用户可能会抛出哪些异常。您不能强制用户处理异常,或在代码中记录它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多