Принудительная реализация интерфейса для проверки исключения

Возможный дубликат:
C# явно определяет какие исключения генерируются

У меня есть такой фрагмент кода Java:

public interface ByteSource
{
    public void open() throws IOException;
    public void close();
    public byte readByte() throws IOException;
    public void writeBytes(byte[] bytes) throws IOException;
}

Я не эксперт по Java (и не по .NET!), и я хочу сделать аналогичный интерфейс для .NET, но не знаю, что делать с throws ..... Я хотел бы знать, что это означает на языке Java.

Должен ли я заботиться об этом? На данный момент лучшее (или единственное, что я могу придумать) будет выглядеть так:

public interface IByteSource
{
    void Open();
    void Close();
    byte ReadByte();
    void WriteBytes(byte[] bytes);
}

Есть ли в .NET подход, аналогичный java-коду?! Может какие атрибуты?!


person Saeid Yazdani    schedule 03.10.2012    source источник
comment
C# также имеет System.IO.IOException: msdn.microsoft.com /en-us/library/system.io.ioexception.aspx   -  person Vikdor    schedule 03.10.2012
comment
+1 за обновление соглашения об именах при переносе на C#   -  person Jamiec    schedule 03.10.2012
comment
На самом деле ReSharper сделал это :D   -  person Saeid Yazdani    schedule 03.10.2012


Ответы (2)


Мне было бы все равно. Проверяемые исключения не были добавлены в .NET по многим причинам, но в основном потому, что в большинстве случаев они больше мешают, чем помогают. Возможно, вы могли бы использовать /// для документирования того, что можно было бы обоснованно ожидать генерировать, но оставить это на усмотрение цепочки вызовов, чтобы решить, обрабатывают ли они это конкретно. Например:

/// <summary>what this does</summary>
/// <exception cref="System.IO.IOException">some scenario</exception>
void Open();
person Marc Gravell    schedule 03.10.2012

В C# вам не нужно объявлять, какие исключения выдает ваш код, поэтому просто забудьте об этой строке кода. Ваш код в порядке.

person Oscar    schedule 03.10.2012