现在的位置: 首页 > 综合 > 正文

c# throw的用法

2013年09月15日 ⁄ 综合 ⁄ 共 948字 ⁄ 字号 评论关闭
c#中throw到底是干什么用的,它是捕获异常,然后弹出异常对话框吗?像MessageBox.Show一样吗?它可以和try,catch连在一起使用吗?如下例:
if (e.ClickedItem == print)
{
i = 0;
try{
if (((Form2)ActiveMdiChild).txtMain.Text.Length < 1)
return;
this.printDocument1.Print();

}
catch (Exception err)
{
throw new Exception("打印发生错误"+err.Message);
//MessageBox.Show("打印发生错误", err.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
以上代码,编译可以通过,但是运行程序出现异常的时候,没有弹出异常对话框,而是程序崩溃了,出现错误是:示处理exception
打印发生错误未将对象引用设置到对象的实例。
是不是代码中的throw用法错了,不能这么用,那到底应该怎么用.

问题补充:

额,那怎么改?

最佳答案

new Exception是用来人为的制造一个异常。而throw 是把这个异常抛出。 
这样我们就可以定义自己想要的异常信息了。
但要注意的是,抛出了异常就一定要处理,不处理的话系统就崩了。
你这里用得不合适。



据个例子,异常抛出可以这么用,我现在用类A中的aa方法,调用实例b中的bb方法,大小写什么的可能都不对,将就着看看吧:
class A
{
private void aa()
{
B bb =new B();
try//这里调用了B的bb方法,并且捕获了bb抛出的异常同时进行了处理
{
bb.bb();
}
catch(Exception e)
{
messagebox.show("Class B Error:"+e);//这里处理了bb的异常信息
}
}
}

class B
{
int i = 0;
public void bb()
{
if(this.i != 0) //这里我随便做了个假设,看着意思明白就可以了
{
throw new Exception("电脑故障了,i不可能大于0.");
}
}
}
你这里就不要用throw了,直接用一个messagebox.show(("打印发生错误"+err.Message);就可以了。

抱歉!评论已关闭.