C# try-catch异常捕获与throw自定义异常 例子

2021-01-06 20:29

阅读:724

标签:inf   自己的   子类   没有   控制台   异常   code   语句   自定义   

题目:编写控制台程序,输入两个整数将其整除,并使用 try-catch 语句捕获除数为 0 的异常, 并输出异常消息

代码1:

 1 static void Main(string[] args)
 2         {
 3             Console.Write("请输入两个整数,使用\‘,\‘隔开: ");
 4             string[] num = Console.ReadLine().Split(",");
 5             float a = float.Parse(num[0]);
 6             float b = float.Parse(num[1]);//这里也要有一个显示类型转换,如果要得到数学商的话就转换成浮点型
 7 
 8             try
 9             {
10                 float quotient = a / b;
11                 Console.WriteLine(quotient);
12             }
13             catch(Exception ee)
14             {
15                 Console.WriteLine(ee);
16             }
17             Console.ReadKey();
18         }

技术图片

 

 会发现没有抛出异常,而是输出了无穷大--a,b是float的原因(语法)

代码2:

 1  Console.Write("请输入两个整数,使用\‘,\‘隔开: ");
 2             string[] num = Console.ReadLine().Split(",");
 3             int a = int.Parse(num[0]);
 4             int b = int.Parse(num[1]);//这里也要有一个显示类型转换,如果要得到数学商的话就转换成浮点型
 5 
 6             try
 7             {
 8                 int quotient = a / b;
 9                 Console.WriteLine(quotient);
10             }
11             catch (Exception ee)
12             {
13                 Console.WriteLine(ee);
14             }
15             Console.ReadKey();

别的不变,仅将a,b改为int型(当然显式类型转换也要改),重新编译运行:

技术图片

 

 成功抛出异常

新的问题又出现了:如果我既要抛出异常,又要是用除法算出小数点的话该怎么做呢?---自定义异常

自定义异常类必须要继承 Exception 类。

声明异常的语句如下。

 class 异常类名 :Exception

{

} 

抛出自己的异常,语句如下

throw( 异常类名 );
class MyException :Exception
{
    public MyException(string message) : base(message)
    {
    }
}

 代码3:

 1 namespace 自定义异常_throw抛出
 2 {
 3     class MyException : Exception //子类MyException继承自父类Exception
 4     {
 5         public MyException(string message) : base(message)
 6         {
 7         }
 8     }
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             Console.Write("请输入两个整数,使用\‘,\‘隔开: ");
14             string[] num = Console.ReadLine().Split(",");
15             float a = float.Parse(num[0]);
16             float b = float.Parse(num[1]);//这里也要有一个显示类型转换,如果要得到数学商的话就转换成浮点型
17 
18             try
19             {
20                 if(b==0)
21                 {
22                     throw new MyException("除数不能为0!");
23                 }
24                 float quotient = a / b;
25                 Console.WriteLine(quotient);
26             }
27             catch (Exception ex)
28             {
29                 Console.WriteLine(ex);
30             }
31             Console.ReadKey();
32         }
33     }
34 }

技术图片

 

 参考资料:http://c.biancheng.net/view/2987.html

C# try-catch异常捕获与throw自定义异常 例子

标签:inf   自己的   子类   没有   控制台   异常   code   语句   自定义   

原文地址:https://www.cnblogs.com/SophieWang-cmu/p/13159497.html


评论


亲,登录后才可以留言!