Memaksa implementasi antarmuka untuk memeriksa pengecualian [duplikat]

Kemungkinan Duplikat:
C# mendefinisikan secara eksplisit pengecualian apa yang diberikan

Saya memiliki sepotong kode Java seperti ini:

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

Saya bukan ahli Java (atau .NET!) dan saya ingin membuat antarmuka serupa untuk .NET tetapi saya tidak yakin apa yang harus dilakukan terhadap throws ..... Saya ingin tahu apa artinya ini dalam bahasa Java.

Haruskah aku mempedulikannya? Saat ini hal terbaik (Atau satu-satunya hal yang dapat saya pikirkan) adalah:

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

Apakah ada pendekatan di .NET yang mirip dengan kode Java?! Mungkin beberapa atribut?!


person Saeid Yazdani    schedule 03.10.2012    source sumber
comment
C# juga memiliki System.IO.IOException: msdn.microsoft.com /en-us/library/system.io.ioException.aspx   -  person Vikdor    schedule 03.10.2012
comment
+1 untuk memperbarui konvensi penamaan Anda saat melakukan porting ke C#   -  person Jamiec    schedule 03.10.2012
comment
Sebenarnya ReSharper melakukan itu :D   -  person Saeid Yazdani    schedule 03.10.2012


Jawaban (2)


Saya tidak akan mempedulikannya. Pengecualian yang dicentang tidak ditambahkan ke .NET karena banyak alasan, tetapi pada dasarnya karena dalam banyak kasus, pengecualian tersebut lebih merupakan penghalang daripada bantuan. Anda mungkin dapat menggunakan /// untuk mendokumentasikan hal-hal yang mungkin diduga secara wajar untuk dilempar, namun serahkan pada rantai panggilan untuk memutuskan apakah mereka menanganinya secara spesifik. Misalnya:

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

Di C# Anda tidak perlu mendeklarasikan pengecualian mana yang dimunculkan oleh kode Anda, jadi lupakan saja baris kode ini. Kode Anda baik-baik saja.

person Oscar    schedule 03.10.2012