ast*_*tef 3 .net c# api-design exception-handling exception
我想知道,为什么Microsoft开发人员不向我们提供各种不可靠方法的"尝试"版本?
如果我使用数据库连接或smtp客户端,我总是必须考虑例外:
try
{
smtpClient.Send(message);
}
catch (SmtpException)
{
// test with real smtp server and analyze an exception and it's contents here
}
Run Code Online (Sandbox Code Playgroud)
但我想要的用户是:
if(!smtpClient.TrySend(message, out reason))
{
// analyze reason here
}
Run Code Online (Sandbox Code Playgroud)
对我来说最大的问题是异常性能开销.我无法承担在我的服务的每个客户电话上抛出异常.如果我需要检查几十个连接/提供者,这可能会导致每个客户端请求有几十个例外.
我的问题是:.NET中这种API设计决策的基本原理是什么?我不认为这是一个错误,因为它无处不在,而不是单一的技术.
更新
我必须再给你一个.NET异常的例子来停止谈论网络延迟.例如,如果停止了Windows服务,则System.Diagnostics.EventLog.WriteEntry可以抛出方法System.ComponentModel.Win32Exception.
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |