12.异常捕获
12.1 知识点
异常捕获的作用
通过异常捕获的学习,可以避免当代码报错时造成程序卡死的情况。在某些情况下,用户的输入或其他外部因素可能导致代码出现异常,为了确保程序的稳定性和可靠性,我们可以使用异常捕获机制。
示例
// 将玩家输入的内容存储在string类型的变量(容器)中
string str = Console.ReadLine();
try
{
// Parse转字符串为数值类型时,必须要合法合规,否则报错
// 输入中文时、非整形数字时或数字超出范围时会卡死
int i = int.Parse(str);
// 其他可能引起异常的代码逻辑
// ...
}
catch
{
// 如果出错了,会执行catch中的代码来捕获异常
// 可以加上参数 catch(Exception e) 具体报错跟踪,通过e得到具体的错误信息
Console.WriteLine("请输入合法数字");
}
finally
{
// 最后执行的代码,不管有没有出错,都会执行其中的代码
// 目前,大家可以不用写
Console.WriteLine("执行完毕");
}
基本语法
//必备部分
try
{
//希望进行异常捕获的代码块
//放到try中
//如果try中的代码 报错了 不会让程序卡死
}
catch
{
//如果出错了 会执行 catch中的代码 来捕获异常
//可以加上参数 catch(Exception e) 具体报错跟踪 通过e得到 具体的错误信息
}
//可选部分
finally
{
//最后执行的代码 不管有没有出错 都会执行其中的代码
//目前 大家可以不用写
}
//注意:异常捕获代码基本结构中 不需要加; 在里面去写代码逻辑时 每一句代码才加;
注意
- 异常捕获代码基本结构中不需要加分号
;
,在里面写代码逻辑时,每一句代码才加分号;
。 - 在
try
块中,如果有多行代码,每行后面需要加分号;
。
实践
try
{
string str1 = Console.ReadLine();
int i1 = int.Parse(str1);
Console.WriteLine(i1);
// 其他可能引起异常的代码逻辑
// ...
}
catch
{
// try中输入非法数字会进到这
Console.WriteLine("请输入合法数字");
}
finally
{
// 无论是否合法都能进到这
Console.WriteLine("执行完毕");
}
以上实践示例中,如果用户输入的字符串无法成功转换为整数,将会执行catch
块中的代码,输出提示信息。最终,不管是否发生异常,都会执行finally
块中的代码,确保资源的正确释放。
12.2 知识点代码
using System;
namespace Lesson09_异常捕获
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("异常捕获");
#region 知识点一 作用
//通过对异常捕获的学习 可以避免当代码报错时 造成程序卡死的情况
//示例
//将玩家输入的内容 存储 string类型的变量(容器)中
string str = Console.ReadLine();
//Parse转字符串为 数值类型时 必须 要合法合规 否则报错
//输入中文时或非整形数字时或数字超出范围时会卡死
int i = int.Parse(str);
#endregion
#region 知识点二 基本语法
//必备部分
try
{
//希望进行异常捕获的代码块
//放到try中
//如果try中的代码 报错了 不会让程序卡死
}
catch
{
//如果出错了 会执行 catch中的代码 来捕获异常
//可以加上参数 catch(Exception e) 具体报错跟踪 通过e得到 具体的错误信息
}
//可选部分
finally
{
//最后执行的代码 不管有没有出错 都会执行其中的代码
//目前 大家可以不用写
}
//注意:异常捕获代码基本结构中 不需要加; 在里面去写代码逻辑时 每一句代码才加;
#endregion
#region 知识点三 实践
try
{
string str1 = Console.ReadLine();
int i1 = int.Parse(str1);
Console.WriteLine(i);
//.......
}
catch
{
//try中输入非法数字会进到这
Console.WriteLine("请输入合法数字");
}
finally
{
//无论是否合法都能进到这
Console.WriteLine("执行完毕");
}
#endregion
}
}
}
12.3 练习题
请用户输入一个数字,如果输入有误,则提示用户输入错误
try
{
string str = Console.ReadLine();
long l = long.Parse(str);
Console.WriteLine("你输入的数字为:" + l);
}
catch
{
Console.WriteLine("您的输入有误");
}
提示用户输入姓名、语文、数学、英语成绩。如果输入的成绩有误,则提示用户输入错误。否则将输入的字符串转为整形变量存储
方法一
try
{
Console.WriteLine("请输入用户名");
string yourName = Console.ReadLine();
Console.WriteLine("请输入语文成绩");
int yuWen = int.Parse(Console.ReadLine());
Console.WriteLine("请输入数学成绩");
int shuXue = int.Parse(Console.ReadLine());
Console.WriteLine("请输入英语成绩");
int yingYu = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("你的输入不合法,成绩请输入数字");
}
方法二
try
{
Console.WriteLine("请输入用户名");
string yourName = Console.ReadLine();
Console.WriteLine("请输入语文成绩");
int yuWen = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("语文成绩输入格式不正确");
}
try
{
Console.WriteLine("请输入数学成绩");
int shuXue = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("数学成绩输入格式不正确");
}
try
{
Console.WriteLine("请输入英语成绩");
int yingYu = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("英语成绩输入格式不正确");
}
12.4 练习题代码
using System;
namespace Lesson09_练习题
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("异常捕获练习题");
#region 练习题一
//请用户输入一个数字
//如果输入有误,则提示用户输入错误
try
{
string str = Console.ReadLine();
long l = long.Parse(str);
Console.WriteLine("你输入的数字为:" + l);
}
catch
{
Console.WriteLine("您的输入有误");
}
#endregion
#region 练习题二
//提示用户输入姓名、语文、数学、英语成绩
//如果输入的成绩有误,则提示用户输入错误
//否则将输入的字符串转为整形变量存储
try
{
Console.WriteLine("请输入用户名");
string yourName = Console.ReadLine();
Console.WriteLine("请输入语文成绩");
string yuWenStr = Console.ReadLine();
int yuWen = int.Parse(yuWenStr);
Console.WriteLine("请输入数学成绩");
//一步到位的写法
int shuXue = int.Parse(Console.ReadLine());
Console.WriteLine("请输入英语成绩");
int yingYu = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("你的输入不合法,成绩请输入数字");
}
try
{
Console.WriteLine("请输入用户名");
string yourName = Console.ReadLine();
Console.WriteLine("请输入语文成绩");
string yuWenStr = Console.ReadLine();
int yuWen = int.Parse(yuWenStr);
}
catch
{
Console.WriteLine("语文成绩输入格式不正确");
}
try
{
Console.WriteLine("请输入数学成绩");
//一步到位的写法
int shuXue = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("数学成绩输入格式不正确");
}
try
{
Console.WriteLine("请输入英语成绩");
int yingYu = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("英语成绩输入格式不正确");
}
#endregion
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com