c# throw的用法c#中throw到底是干什么用的,它是捕获异常,然后弹出异常对话框吗?像MessageBox.Show一样吗?它可以和try,catch连在一起使用吗?如下例:if (e.ClickedItem == print){i = 0;try{if (((Form2)ActiveMdiChild)
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/22 21:33:39
c# throw的用法c#中throw到底是干什么用的,它是捕获异常,然后弹出异常对话框吗?像MessageBox.Show一样吗?它可以和try,catch连在一起使用吗?如下例:if (e.ClickedItem == print){i = 0;try{if (((Form2)ActiveMdiChild)
c# throw的用法
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用法错了,不能这么用,那到底应该怎么用.
额,那怎么改?
c# throw的用法c#中throw到底是干什么用的,它是捕获异常,然后弹出异常对话框吗?像MessageBox.Show一样吗?它可以和try,catch连在一起使用吗?如下例:if (e.ClickedItem == print){i = 0;try{if (((Form2)ActiveMdiChild)
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);就可以了.