很抱歉这个令人困惑的标题。基本上我创建了一个BinaryReader类,它读入大端并将其构造函数设置为:
BinaryReader2(System.IO.Stream strm) : base(strm){}
我被告知你不能以任何其他方式调用基类的构造函数,这是最好的方法。
问题是,当另一个程序控制我正在尝试读取的文件时,它不会显示任何错误消息(因为我是编程新手并且没有设置任何try catch语句。 )。所以,我试图通过使用try-catch语句来解释所有可能的情况。我之前从未使用过它们,所以我希望能得到它的一些指示。
我在整个程序的许多地方创建了binaryreader2类,希望我可以在binaryreader类本身内设置try catch,而不是在我使用它的每个地方。是否可以这样做并仍然调用基类的构造函数?
答案 0 :(得分:1)
一种可能的解决方法:使用组合而不是继承。通过这种方式,您可以更好地控制初始化以前的基础对象。
答案 1 :(得分:0)
我之前从未使用过它们,所以我希望能得到一些指示。
一般情况下,将Try / Catch放在“外出”的代码中。你的程序无法控制的东西。获取文件,从数据库中获取内容等
尝试阻止尽可能少的代码。例如,在Try中包装文件提取调用,而不是之后发生的所有事情。 I.E.正如@Marc上面所说,一旦你拥有一个有效的FileStram对象,就没有必要把它放在Try块中。
如果您执行上述操作,则可以捕获非常具体的异常类型。这将允许您提供有关问题的良好错误消息,或以其他方式处理代码中的问题,以便您的程序不必只是爆炸。
仔细研究重新抛出原始异常副之间抛出新异常实例的区别。
建议:在Try和Catch块中包装你的初始Run()。了解“发布”。例如,您可以向自己发送电子邮件。在数据库中填充异常,写入日志文件。
使用上面的应用程序中的每个 Catch ,总是重新抛出(请参阅上面的警告)异常并且您只有一个点你用它做一些有用的事情。