相关疑难解决方法(0)

什么时候抛出异常?

我为我的应用程序不期望的每个条件创建了异常. UserNameNotValidException,PasswordNotCorrectException等等.

但是我被告知我不应该为这些条件创建例外.在我的UML中,那些是主流的例外,为什么它不应该是例外?

创建例外的任何指导或最佳实践?

language-agnostic exception

409
推荐指数
12
解决办法
14万
查看次数

在返回值的函数上实现超时

我有一个函数,它在串行端口上调用读或写请求,然后返回读取的值.我正在使用Commstudio express(我正在实现Commstudio中的一个类),但它的超时功能似乎根本不起作用,所以我正在尝试实现自己的超时.目前我有一个定时器,根据请求设置读取或写入端口,如果定时器熄灭,回调将关闭连接导致异常.我试图让计时器的回调抛出一个异常,但异常需要通过调用原始读/写函数的线程传播,所以这样,它起作用,但我觉得它很混乱,那里必须是一个更好的方式来做我想要的.

.net c# timeout serial-port

11
推荐指数
1
解决办法
2万
查看次数

"TryParse/Parse like"模式:实现它的最佳方式是什么

这个问题是如何表明方法不成功的后续问题.xxx()Tryxxx()模式在许多库中非常有用.我想知道在不重复我的代码的情况下提供这两种实现的最佳方法是什么.

什么是最好的:

public int DoSomething(string a)
{
     // might throw an exception
}
public bool TrySomething(string a, out result)
{
    try
    {
        result = DoSomething(a)
        return true;
    }
    catch (Exception)
    {
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

要么

public int DoSomething(string a)
{
     int result;
     if (TrySomething(a, out result))
     {
         return result;
     }
     else
     {
         throw Exception(); // which exception?
     }
}
public bool TrySomething(string a, out result)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

我本能地假设第一个例子更正确(你确切知道发生了哪个异常),但是try/catch不能太昂贵吗?有没有办法在第二个例子中捕获异常?

design-patterns try-catch return-value

9
推荐指数
2
解决办法
2845
查看次数