c# 程序中try {}catch{}用法;如何在catch抛出异常后重新执行try

c# 程序中try {}catch{}用法;如何在catch抛出异常后重新执行try,第1张

将try catch语句块写入到一个while(标志)循环中,当执行已经成功后记得在代码中将标志的值置为false即可退出循环。

还有一个办法,直接使用goto强制跳转也是可以的,但缺点是程序容易陷入死循环,而其不易读。

在try中没有异常的情况下try、catch、finally的执行顺序 try --- finally

如果try中有异常,执行顺序是try --- catch --- finally

如果try中没有异常并且try中有return这时候正常执行顺序是try ---- finally --- return

如果try中有异常并且try中有return这时候正常执行顺序是try ---- catch ---- finally --- return

总之 finally 永远执行!

一、C#的异常处理所用到关键字

try 用于检查发生的异常,并帮助发送任何可能的异常。

catch 以控制权更大的方式处理错误,可以有多个catch子句。

finally 无论是否引发了异常,finally的代码块都将被执行。

throw 用于引发异常,可引发预定义异常和自定义异常。

二、C#异常处理的格式

try

{

程序代码块;

}

catch(Exception e)

{

异常处理代码块;

}

finally

{

无论是否发生异常,均要执行的代码块;

}

三、异常处理实战

一个除数和零的简单例子:

public class DivisorIsZero

{

private static void Main()

{

int dividend=10;

int divisor1=0;

int divisor2=5;

int DivideValue;

try

{

DivideValue=dividend/divisor1; //(1)

//DivideValue=dividend/divisor2; //(2)

SystemConsoleWriteLine("DivideValue={0}",DivideValue);//(3)这一行将不会被执行。

}

catch

{

SystemConsoleWriteLine("传递过来的异常值为:{0}",e);

}

finally

{

SystemConsoleWriteLine("无论是否发生异常,都会显示。");

}

}

}

注:(1)行被执行则会抛出一个异常,如果没有catch语句,程序会异常终止,使用不带参数的catch子句,则可以捕获任意类型的异常。

如果将(1)行注释掉,启用(2)行,这意味该程序运行时不会出现异常,从输出可知,finally代码块仍将被执行。

可以给try语句提供多个catch语句,以捕获特定的异常,如上例中:0作为除数则会引发DivideByZeroException类型的异常,上例中的catch语句可以作如下修改:

catch(DivideByZeroException e)

{

SystemConsoleWriteLine("零不能作为除数!异常值为:\n{0}",e);

}

catch(Exception e)

{

SystemConsoleWriteLine("并非\''零作为除数引发的异常\"!异常值为:\n{0}",e);

}

try就是尝试的意思

程序难免会出错,这里就是尝试运行程序,如果出错,一般后面会有个catch()来捕获出错的对象,这个过程称为捕获异常,并提供相应的解决办法

try{

尝试运行的代码块

}

catch{

提供相应的出错信息或解决办法

}

try catch是一种异常处理机制,但是有两点需要注意。

1只有在try块内部的代码所抛出的异常才会被捕获,如果是try块范围外的代码,就不会捕捉异常。

2catch需要指定异常类型。只能够捕获指定的异常类型。如果发生崩溃的异常并没有列在catch中,那么也不会捕获该异常。最终导致程序崩溃。

class TestTryCatch

{

static int GetInt(int[] array, int index)

{

try

{

return array[index];

}

catch (SystemIndexOutOfRangeException e) // CS0168

{

SystemConsoleWriteLine(eMessage);

//set IndexOutOfRangeException to the new exception's InnerException

throw new SystemArgumentOutOfRangeException("index parameter is out of range", e);

}

}

}

MSDN实例,看看吧。

Private Function Try()

Dim aNumber As Double

aNumber = CDbl(Text1Text)

MsgBox ("You entered the number " & aNumber)

catch

MsgBox ("Please enter a number")

finally

MsgBox ("Why not try it again")

End Try

click事件中调用Try()就行了。

以上就是关于c# 程序中try {}catch{}用法;如何在catch抛出异常后重新执行try全部的内容,包括:c# 程序中try {}catch{}用法;如何在catch抛出异常后重新执行try、程序中有try-catch-finally结构,finally之后还有return,假如try中有异常,finally和return是如何执行的、运用try、catch、finally、throw编写C#程序实现异常处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10078682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存