如何在C#中使用Java风格的抛出关键字?

2022-08-31 09:07:52

在 Java 中,throws 关键字允许方法声明它不会自行处理异常,而是将其抛给调用方法。

C# 中是否有类似的关键字/属性?

如果没有等价物,您如何实现相同(或类似)的效果?


答案 1

op 询问的是 Java 的 throws 子句的 C# 等效项,而不是关键字。这在 Java 中的方法签名中使用,以指示可以引发已检查的异常。throw

在 C# 中,没有 Java 检查异常的直接等效项。C# 没有等效的方法签名子句。

// Java - need to have throws clause if IOException not handled
public void readFile() throws java.io.IOException {
  ...not explicitly handling java.io.IOException...
}

翻译为

// C# - no equivalent of throws clause exceptions are unchecked
public void ReadFile() 
{
  ...not explicitly handling System.IO.IOException...
}

答案 2

在 Java 中,必须处理异常,或者将方法标记为可能使用关键字引发该异常的方法。throws

C#没有这个关键字或等效的关键字,就像在C#中一样,如果你不处理异常,它会冒泡,直到被抓住,或者如果没有被抓住,它将终止程序。

如果你想处理它,然后重新抛出,你可以执行以下操作:

try
{
  // code that throws an exception
}
catch(ArgumentNullException ex)
{
  // code that handles the exception
  throw;
}

推荐