บังคับให้ใช้งานอินเทอร์เฟซเพื่อตรวจสอบข้อยกเว้น [ซ้ำกัน]

สิ่งที่ซ้ำกันที่เป็นไปได้:
การกำหนด 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 .... ฉันต้องการทราบว่าสิ่งนี้ในภาษาจาวาหมายถึงอะไร

ฉันควรสนใจมันไหม? สิ่งที่ดีที่สุด (หรือสิ่งเดียวที่คิดได้) ในตอนนี้จะเป็นดังนี้:

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 ด้วยเหตุผลหลายประการ แต่โดยพื้นฐานแล้ว เนื่องจากในกรณีส่วนใหญ่ สิ่งเหล่านี้เป็นอุปสรรคมากกว่าความช่วยเหลือ คุณอาจใช้ /// เพื่อ จัดทำเอกสาร ถึงสิ่งที่ คาดหวังอย่างสมเหตุสมผล ที่จะทิ้ง แต่ปล่อยให้เป็นหน้าที่ของ call-chain เพื่อตัดสินใจว่าพวกเขาจะจัดการเรื่องนั้นโดยเฉพาะหรือไม่ ตัวอย่างเช่น:

/// <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