当前位置: 首页 > 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.lryc.cn/news/599776.html

相关文章:

  • Android 的16 KB内存页设备需要硬件支持吗,还是只需要手机升级到Android15系统就可以
  • [python][基础]Flask 技术栈
  • c盘temp文件夹可以删除吗?C盘空间清理指南来了
  • epoll_event数据结构及使用案例详解
  • WPF高级学习(一)
  • 智能机器人的技术革命:从感知到决策的全栈架构解析
  • leetcode933最近的请求次数
  • Keepalived 深度技术解析与高可用实践指南
  • 三种深度学习模型(GRU、CNN-GRU、贝叶斯优化的CNN-GRU/BO-CNN-GRU)对北半球光伏数据进行时间序列预测
  • Python 爬虫(五):PyQuery 框架
  • Gin 框架的中间件机制
  • 【世纪龙科技】新能源汽车电驱动总成装调与检修仿真教学软件
  • PHP:从入门到实践——构建现代Web应用的利器
  • 【STM32项目】有毒气体监测
  • VUE懒加载(4种方式)
  • 【Android】桌面小组件开发
  • Java设计模式-建造者模式
  • Tomcat线程池深度优化指南:高并发场景下的maxConnections计算与监控体系
  • iOS 加固工具实战解析,主流平台审核机制与工具应对策略
  • iOS WebView 调试实战,文件上传与权限弹窗异常的排查路径
  • Win11批量部署神器winget
  • 【通识】算法案例
  • Python--文件操作
  • MYSQL高可用集群搭建--docker
  • Kingbasepostgis 安装实践
  • 电子电气架构 --- 车载软件与样件产品交付的方法
  • 华为昇腾NPU卡 文生音频[T2A]大模型suno/bark模型推理使用
  • 线性代数 上
  • 旧物回收系统开发:搭建资源再生与环保共赢的桥梁
  • AMD官网下载失败,不让账户登录下载