C#在运行时返回异常

时间:2010-07-05 09:59:46

标签: c#

不要认为这是可能的,但我想我会问,也许有人可能会提出替代技术或模式。

假设我有一个Customer类,其中包含与外部源分开拉出的Books列表。如果Customer类成功但书籍加载失败,我不想抛出异常,除非客户端试图访问Books属性,所以..

this.Books = new List<Book>()
{
    throw new Exception("Books couldn't load because blah blah");
};

这些方面的内容是否可能?

2 个答案:

答案 0 :(得分:10)

如何将此逻辑放入使用私有字段Books备份的books属性中:

public IEnumerable<Book> Books //or public IList<Book> Books
{
    get
    {
        if(this.books == null)
            throw new Exception("Books couldn't load because blah blah");
        return this.books;
    }
}

答案 1 :(得分:4)

在Books属性中,添加一个逻辑以检查是否已加载集合:

public List<Book> Books { get {
  if (this.books == null) // or any other flag check
    throw new InvalidOperationException("Books are not loaded.");
  return this.books;
} }