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

C# 异常捕获

C# 异常捕获

  • 1.编译错误与运行错误
  • 2.进行异常捕获

1.编译错误与运行错误

在编写程序时,编译器会帮我们检查程序是否有错误,当我们改正之后,程序就可以编译了,通常也能够正常运行。

让我们来看看下面这段代码:

using System;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = Console.ReadLine();
            int n = int.Parse(s);
            Console.WriteLine(n);
        }
    }
}

这段代码在编译的时候不会报错,而且当我们正常输入整数时,程序也能正常运行。

但当我们输入的不是整数时,就出现了异常
System.FormatException: Input string was not in a correct format.

我们把编译器能够发现并指出的错误叫做编译错误或者叫语法错误,而把上述那种运行时可能出现的错误叫做运行错误或者叫逻辑错误


2.进行异常捕获

在程序运行时出现错误是很可怕的事,它们被称为bug,造成的影响有大有小,但是几乎都是恶性的。

作为一个老道的程序员,应该学会提前预判可能产生的错误,并提前写好解决办法。

而我们要说的异常捕获,就是为了在异常发生时执行解决办法。

异常捕获语句的语法格式如下:

try
{
	<可能出现异常的代码>
}
catch
{
	<出现异常后执行的代码>
}
finally
{
	<不管有没有异常都要执行的代码(可选)>
}

catch还可以写成catch(Exception e),其中e为捕获到的异常,我们可以通过e了解到异常的具体信息。

使用异常捕获语句来改写之前的代码:

using System;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = Console.ReadLine();
            try
            {
                int n = int.Parse(s);
                Console.WriteLine(n);
            }
            catch
            {
                Console.WriteLine("输入的不是一个整数");
            }
        }
    }
}

这么写,在原本程序会崩溃的情况下,现在程序能够正常的运行结束,并输出:"输入的不是一个整数"

使用etoString方法,来打印异常信息:

using System;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = Console.ReadLine();
            try
            {
                int n = int.Parse(s);
                Console.WriteLine(n);
            }
            catch(Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally
            {
                Console.WriteLine("程序执行完毕");
            }
        }
    }
}

当错误输入时的输出:

System.FormatException: Input string was not in a correct format.
   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at System.Int32.Parse(String s)
   at ConsoleApplication.Program.Main(String[] args) in C:\Users\Marquis\Desktop\ConsoleApplication\Program.cs:line 12
程序执行完毕

使用熟练异常捕获可以帮助我们提高项目的健壮性,使得程序在发生错误时,仍能解决问题并继续运行,这样也就提高了用户体验。

相关文章:

  • 【Vue】列表动画
  • 实现一个简单的Database2(译文)
  • COMSOL中事件接口介绍
  • Python基础语法
  • 前端学习——Echarts5开发技术
  • 一个基于.Net Core+Vue+Element Ui开发的OA系统
  • Linux服务器性能监控,首选Zabbix6
  • SAP 系统银行账户管理
  • ElasticSearch学习笔记记录5【图灵Fox】
  • Mybatis练习(持续更新)
  • 1105:数组逆序重存放
  • 微服务应用性能分析实战19 望火楼:与故障系统联动,纳入、积累故障资产
  • android:登录界面记住密码
  • 网络系统建模与仿真技术,信息网络建模与仿真
  • 【日拱一卒行而不辍20220924】自制操作系统
  • CSS3 变换
  • es的写入过程
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript创建对象的四种方式
  • markdown编辑器简评
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python学习之路13-记分
  • React中的“虫洞”——Context
  • Service Worker
  • WebSocket使用
  • 基于axios的vue插件,让http请求更简单
  • 检测对象或数组
  • 提醒我喝水chrome插件开发指南
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 异步
  • 由插件封装引出的一丢丢思考
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #《AI中文版》V3 第 1 章 概述
  • #if 1...#endif
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Core引入性能分析引导优化
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [].slice.call()将类数组转化为真正的数组
  • [20181219]script使用小技巧.txt
  • [AIGC] Spring Interceptor 拦截器详解
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [Asp.net mvc]国际化
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [bzoj1038][ZJOI2008]瞭望塔
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [CISCN2019 华东南赛区]Web4
  • [codevs 1515]跳 【解题报告】
  • [DM复习]关联规则挖掘(下)