运用try、catch、finally、throw编写C#程序实现异常处理

运用try、catch、finally、throw编写C#程序实现异常处理,第1张

一、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);

}

简单啊

finally{//finally 无论是否有异常都要执行的代码

try{

解锁文件 *** 作xxx

}catch{

处理异常xxx

}

}

package comfmlresource;

import javaxswingIcon;

import javaxswingJOptionPane;

public class CaiShuZi4JOptionPane {

/

@param args

/

public static void main(String[] args) {

Icon icon = null;

boolean bl = false;

int put = 0;

int c = (int) (((Mathrandom())100)+1); //获取一个1-100的随机数

Systemoutprintln("你获取的随机数是:"+c); //打印你的随机数字

String str1 = (String) JOptionPaneshowInputDialog(null,"请输入你的猜测数字(1-100):\n","猜数字游戏",JOptionPanePLAIN_MESSAGE,icon,null,"在这输入"); //第一次输入你的猜测数字

if(str1==null){

JOptionPaneshowMessageDialog(null, "你已经取消了本次游戏"); //如果你点取消那么本次游戏结束

}else{

bl = num(str1); //判断是输入的是不是数字或者是整数

if(true==bl){ //如果是数字的话进入与随机数比较的程序

Systemoutprintln("你输入的数字是:"+str1); //打印你输入的数字

put = IntegervalueOf(str1);

for(int i = 4;i > 0;i--){ //i是你可以猜测的次数

if(put==c){

JOptionPaneshowMessageDialog(null, "恭喜你猜对了,正确答案是:"+c+"。"); //如果你猜对了就直接结束循环

break;

}else if(put>c){ //如果输大了就让你再次从新输入

str1 = (String) JOptionPaneshowInputDialog(null,"你的输入过大。你还有"+i+"次机会,请重新输入:\n","猜数字游戏",JOptionPanePLAIN_MESSAGE,icon,null,"在这输入");

if(str1==null){

JOptionPaneshowMessageDialog(null, "你已经取消了本次输入");

break;

}else{

bl =num(str1);

if(true==bl){

put = IntegervalueOf(str1);

}else{

JOptionPaneshowMessageDialog(null, "你的输入不正确,请重新输入");

}

}

}else if(put<c){ //如果你输小了也让你从新输入

str1 = (String) JOptionPaneshowInputDialog(null,"你的输入过小。你还有"+i+"次机会,请重新输入:\n","猜数字游戏",JOptionPanePLAIN_MESSAGE,icon,null,"在这输入");

if(str1==null){

JOptionPaneshowMessageDialog(null, "你已经取消了本次输入");

break;

}else{

bl =num(str1);

if(true==bl){

put = IntegervalueOf(str1);

}else{

JOptionPaneshowMessageDialog(null, "你的输入不正确,请重新输入");

}

}

}

}

}else if(bl==false){ //这个 是你第一次如果填写的不是数字的话也会结束本次游戏

JOptionPaneshowMessageDialog(null, "请您下次按要求填写。本次游戏结束");

}

if(true==bl && c!=put){ //如果你i次都没猜对,那么就直接告诉你这个数十什么

JOptionPaneshowMessageDialog(null, "很遗憾你没能猜对,这个数字是:"+c+"");

}

}

}

public static boolean num(String value){ //一个静态方法,判断你输入的是不是数字

try {

IntegerparseInt(value);

return true;

} catch (Exception e) {

return false;

}

}

}

你先看看我的实例,最下面的一个就是捕获异常和进行处理的方法

在整个JAVA的异常处理中,实际上也是按照面向对象的方式进行处理,处理的步骤如下:

1、一旦产生异常,将会产生一个异常类的实例化对象。

2、在try语句中对这个异常对象进行捕获。

3、产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码。

Try {

      } catch (…) {   

      }  finally {

             ……

      }

这个finally如果没有中途退出最后是一定会执行到的。

throws 是用在主类前面的,是让他的父类来处理这个异常。不在此类中处理

1、将预见可能引发异常的代码包含在try语句块中。

2、如果发生了异常,则转入catch的执行。catch有几种写法:

catch

这将捕获任何发生的异常。

catch(Exception e)

这将捕获任何发生的异常。另外,还提供e参数,你可以在处理异常时使用e参数来获得有关异常的信息。

catch(Exception的派生类 e)

这将捕获派生类定义的异常,例如,我想捕获一个无效 *** 作的异常,可以如下写:

catch(InvalidOperationException e)

{

}

这样,如果try语句块中抛出的异常是InvalidOperationException,将转入该处执行,其他异常不处理。

catch可以有多个,也可以没有,每个catch可以处理一个特定的异常。net按照你catch的顺序查找异常处理块,如果找到,则进行处理,如果找不到,则向上一层次抛出。如果没有上一层次,则向用户抛出,此时,如果你在调试,程序将中断运行,如果是部署的程序,将会中止。

如果没有catch块,异常总是向上层(如果有)抛出,或者中断程序运行。

3、finally

finally可以没有,也可以只有一个。无论有没有发生异常,它总会在这个异常处理结构的最后运行。即使你在try块内用return返回了,在返回前,finally总是要执行,这以便让你有机会能够在异常处理最后做一些清理工作。如关闭数据库连接等等。

注意:如果没有catch语句块,那么finally块就是必须的。

如果你不希望在这里处理异常,而当异常发生时提交到上层处理,但在这个地方无论发生异常,都要必须要执行一些 *** 作,就可以使用

以上就是关于运用try、catch、finally、throw编写C#程序实现异常处理全部的内容,包括:运用try、catch、finally、throw编写C#程序实现异常处理、finally或者catch中一定要执行某个方法 ,但是这个方法有可能异常 怎么办、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/10181186.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存