关于.NET中异常/事件处理的小问题
有这么一段程序public void Method(string id)
{
if (!IsIdExists(id))
{
// 询问是否创建该ID,如果选择(是)则创建并继续执行DoSomething(),否则结束。
}
DoSomething();
}
我就是想问下,其实中注释那一段代码该如何写? 事件处理 异常处理 --------------------编程问答--------------------
--------------------编程问答-------------------- if (MessageBox.Show("是否创建该ID") == DialogResult.Yes)
if (MessageBox.Show("aaa", "aaaa", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK)
{
}
else
{
}
DoSomething();
else
return; --------------------编程问答--------------------
对了,忘了不好意思,忘了说明一个情况,这个方法是在一个纯粹的类中,不包含UI操作的。 --------------------编程问答-------------------- public void Method(string id)
{
if (!IsIdExists(id))
{
if (MessageBox.Show("是否创建该ID", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
DoSomething();
else
return;
}
} --------------------编程问答-------------------- --------------------编程问答-------------------- 这是纯业务问题,别人怎么知道怎么写。 --------------------编程问答-------------------- public void Method(string id,bool iscreate)
{
if (!IsIdExists(id))
{
// 询问是否创建该ID,如果选择(是)则创建并继续执行DoSomething(),否则结束。
if(iscreate)
DoSomething();
else
return;
}
DoSomething();
} --------------------编程问答--------------------
不包含UI操作,你觉得应该如何进行“如果选择(是)”这个操作呢? --------------------编程问答--------------------
public void Method(string id,bool iscreate) 再多加个参数是否创建.. --------------------编程问答-------------------- 不想在纯业务类里面引入UI操作的话,那你可以将IsIdExists方法放到UI操作层去,而Method方法只处理DoSomething();或者你也可以专门建一个用来处理系统中所有需要与用户交互或提示的工程
--------------------编程问答--------------------
当然,对于IsIdExists()这样的情况是可以这样做,但如果将它换成一个执行时的例外情况,而我又希望用户来选择是否忽略这个例外,而不是简单的抛出异常随后结束执行,又该怎么做? --------------------编程问答--------------------
接口,依赖倒置 --------------------编程问答-------------------- 那你只有在UI层对异常进行捕获,然后进行处理了 --------------------编程问答--------------------
如果采用这种方式的话,那出现例外情况之后就不可能继续执行DoSomethine()了吧
--------------------编程问答--------------------
你可以把DoSomething封装成一个方法,然后在UI层调用这个方法 --------------------编程问答-------------------- try
{
//正常的逻辑
}
catch
{
//使用Messagebox等来询问是否处理
if (MessageBox.Show("aaa", "aaaa", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK)
调用Dosomething
} --------------------编程问答-------------------- public void Method(string id)
{
if(Server.RequestCreateID(id))
{
dosomething();
}
return;
}
server是外部提供的接口实现 --------------------编程问答--------------------
补充:.NET技术 , C#