将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#程序实现异常处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)