C# .NET错误处理:try/catch VS event VS return value/status字段
我现在正处于跨平台移动应用开发的关键十字路口,我真的需要一些专业知识(比如woah) 为了提供一些背景信息(我希望这有助于回答这个问题),我正在.NET中开发一个移动应用程序,它基于方便的dandy MonoCross框架,使用VS2010U(不是MonoDevelop,而是IOS)。第一个目标平台是Android,然后是IOS和Windows Phone的“端口”(如果我做得对的话就不是这样)C# .NET错误处理:try/catch VS event VS return value/status字段,c#,.net,visual-studio-2010,xamarin.android,C#,.net,Visual Studio 2010,Xamarin.android,我现在正处于跨平台移动应用开发的关键十字路口,我真的需要一些专业知识(比如woah) 为了提供一些背景信息(我希望这有助于回答这个问题),我正在.NET中开发一个移动应用程序,它基于方便的dandy MonoCross框架,使用VS2010U(不是MonoDevelop,而是IOS)。第一个目标平台是Android,然后是IOS和Windows Phone的“端口”(如果我做得对的话就不是这样) 现在我有了一个坚实的基础,包括业务逻辑、数据访问层、数据库、REST WebService等。我正在
现在我有了一个坚实的基础,包括业务逻辑、数据访问层、数据库、REST WebService等。我正在经历并尝试在一些错误处理中工作,但是我不确定最好的方法是什么。
有人告诉我,try-catch块可能是性能命中(在本例中这是一个大问题),是这是真的吗?我应该谨慎地使用它们,还是在可能引发异常的地方直接使用它们 (我有点想在我所有的SQLite API调用中使用它们,因为我不知道到底是什么 他们做了一半的时间) 使用事件回调对错误处理来说是件坏事吗?有人建议我在任何时候都使用这些 可能,而不是尝试捕捉,出于性能原因,但我不想破坏任何设计 原则和范例,最后到处都是草率的高卢-罗比代码 第三种选择,它的管理费用最少,但对交易来说是无限刺激的 使用,是状态字段和返回值 你们怎么想?我想我只是在寻找一些大致的方向,也许是关于何时何地使用它们的一些建议,以及我最有可能遗漏的任何其他技术。请让我知道,如果需要更多的细节,因为我很乐意给他们
感谢您为此抽出时间 使用
try/catch
以防捕获预期的异常。通常通过异常确定Workfow不是一个好的选择,但在IO操作的情况下,它可能是唯一的选择。例如,您向某个突然失去连接的外部设备写入数据。在这种情况下,您的程序将得到一个异常,但必须像处理常见错误一样处理它。我认为,让您的程序难看的是,无论在哪里都进行异常处理,尽管我们有很好的异常处理模式
这些将在您的代码库中出现的功能称为横切关注点,如日志记录、安全性、审计、异常处理和
你可以在这里找到好的图案
值得一提的是,我不建议使用微软文档中推荐的EntLib
如果您寻找面向方面的编程(AOP),您会发现很好的资源。
最后一个提示是,实现将使用依赖注入/IoC框架来解决这些问题
我有点想在我所有的SQLite API调用中使用它们,因为我不知道它们有一半的时间在做什么
如果您说您正在使用一个库来与SQLite接口,那么这个库API很可能已经在某些错误情况下抛出异常。当然,在这种情况下,您应该使用try/catch来处理这些调用并处理这些错误情况
当您还没有自己编写代码时,当您正在使用其他人的库时,总是会出现这种情况
如何处理这些错误是你的决定
我的忠告是:
- 在大多数情况下,我反对回调/事件。如果导致错误的API是异步的,并且程序流已经不是不言自明的,那么应该主要使用这些API
- 抛出异常确实比状态代码/返回值慢,但它可以安全地在当前任何移动平台上,在应用程序不需要时间限制的任何情况下使用手机游戏使用异常抛出,并且它们对时间非常关键(某种程度上)
- 抛出异常提供了更好的代码可读性——在我看来,这是一件主观的事情——并且是一种在发生错误时跳出当前上下文的好方法