当前位置: 首页 > news >正文

【04】C#入门到精通——C# 程序错误处理, try catch 捕获异常,避免程序崩溃

文章目录

  • 1 错误场景
  • 2 try catch 捕获异常

1 错误场景

using System;
//类型
//关键字
class Program
{static void Main(){Console.WriteLine("请输入你的年龄:");string age = Console.ReadLine();int age2 = age + 10;//C#自动做str转换Console.WriteLine("你的年龄是:" + age2);Console.ReadKey(); //等待任意键输入,继续向下执行}
}

在这里插入图片描述

        Console.WriteLine("请输入你的年龄:");string age = Console.ReadLine();int age2 = int.Parse(age) + 10;//str转int需手动实现Console.WriteLine("你的年龄是:" + age2);

在这里插入图片描述

数字字符串可以转int类型的年龄,
但是当用户 输入 字母等其他非法类型的年龄时,程序无法进行 int转换,会报错,程序崩溃

在这里插入图片描述

2 try catch 捕获异常

可以用 try catch 捕获异常,避免程序崩溃


try{//将有可能出错的内容,写到try语句里;//如果正确,正常执行,如果错误就会被catch抓取到,程序立马跳转到 catch,执行catch里面的内容//try语句里 异常的下一句不会执行}catch{//如果try内部出错,错误就会被catch抓取到,程序立马跳转到 catch,执行catch里面的内容//捕获到错误后,在这里可以做其他处理,避免程序崩溃}

示例, 如果try内部出错,程序立马跳转到 catch,执行catch里面的内容return;

static void Main()
{Console.WriteLine("请输入你的年龄:");string str = Console.ReadLine();int age = 0;try{//将有可能出错的内容,写到try语句里;//如果正确,正常执行,如果错误就会被catch抓取到,程序立马跳转到 catch,执行catch里面的内容age = int.Parse(str);//如果异常,下面一句不会执行,程序立马跳转到 catch,}catch{//如果try内部出错,错误就会被catch抓取到,那么就执行catch里面的内容Console.WriteLine("请输入一个正确的年龄(必须是数字)");return;//程序提前结束,下面的不会在执行;(当然这里可以做其他处理)}age = age + 10;Console.WriteLine("你10年后的年龄是:" + age);Console.ReadKey(); //等待任意键输入,继续向下执行
}

上面存在一个问题,提示"请输入一个正确的年龄(必须是数字)"之后程序就结束了,用户信息并没有输入完毕;

下面改进:如果输入非法,继续循环输入,直到输入正确为止

    static void Main(){bool isCheck = true;int age = 0;while (isCheck){Console.WriteLine("请输入你的年龄:");string str = Console.ReadLine();try{//将有可能出错的内容,写到try语句里;//如果正确,正常执行,如果错误就会被catch抓取到,程序立马跳转到 catch,执行catch里面的内容age = int.Parse(str);//如果异常,下面一句不会执行,程序立马跳转到 catch,isCheck = false;//如果上一句异常,这一句不会执行;只有正常才会执行此句,用户输入结束}catch{//如果try内部出错,错误就会被catch抓取到,程序立马跳转到 catch,执行catch里面的内容Console.WriteLine("请输入一个正确的年龄(必须是数字)");isCheck = true;//如果输入非法,继续循环输入}}age = age + 10;Console.WriteLine("你10年后的年龄是:" + age);Console.ReadKey(); //等待任意键输入,继续向下执行}

在这里插入图片描述

catch里面可以什么都不写,

因为,只有输入正确 try 里面的 isCheck = false;才会被执行,此时输入循环结束;

否则错误时,循环条件中一直为真,就一直循环输入,直到输入一个 可以转换为 int 数据的合法年龄为止

catch
{
}

测试

static void Main()
{bool isCheck = true;int age = 0;while (isCheck){Console.WriteLine("请输入你的年龄:");string str = Console.ReadLine();try{//将有可能出错的内容,写到try语句里;//如果正确,正常执行,如果错误就会被catch抓取到,那么就执行catch里面的内容age = int.Parse(str);//如果异常,下面一句不会执行,程序立马跳转到 catch,isCheck = false;//如果上一句异常,这一句不会执行;只有正常才会执行此句,用户输入结束}catch{}}age = age + 10;Console.WriteLine("你10年后的年龄是:" + age);Console.ReadKey(); //等待任意键输入,继续向下执行
}

在这里插入图片描述

http://www.dtcms.com/a/484162.html

相关文章:

  • 学校建设网站目标东营网站建设那家好
  • 上市公司网站建设分析评价wordpress前台注册登录弹窗代码
  • 站长平台工具淮南电商网站建设价格
  • ST_7735S TFT屏幕驱动移植 (at32f421c8t7)
  • 网站留言短信通知 源码wordpress 网页搜索排名
  • 主营网站建设会计记账产品推广软文范文
  • 手机上网网站建设wordpress+判断标签
  • 网站设计是做什么的wordpress淘宝客网站模板
  • 微信做购物网站怎么抽佣wordpress官方模板下载
  • 我的网站是面向全国的选哪个公司的服务器比较好手机wap网站建设解决方案
  • 网上接网站做唐山市住房和诚乡建设局网站
  • 南宁专业做网站高水平的郑州网站建设
  • 聊天室项目开发——说明开发环境,安装并使用第一个第三方库gflags
  • 如何建设个人免费网站教程视频自己做动漫头像的网站
  • 旅行社网站建设方案书创新能力建设资金网站
  • 电子电气架构 --- 车载操作系统鸿蒙OS和AliOS
  • 网站建设怎么做帐门户模板
  • 网站在阿里云备案福田响应式网站建设服务
  • 广东h5网站建设phpcms 手机网站
  • 论坛网站源码下载网站建设与维护的案例
  • 长沙建网站理温州电商网站建设
  • 南昌专业网站设计网站建设制作放之
  • 网站推广计划怎么做杭州网站制作流程
  • 厦门市建设工程质量安全协会网站北京发布会直播回放
  • 建设企业网站费用深圳几个区
  • zabbix模版、监控项、图形
  • 数据结构 04 栈和队列
  • 网站设计报价方案yu网站建设
  • 如何配置php网站富阳网站建设找哪家
  • 东莞网站制作方案定制有哪些网站做汽车周边服务