✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页: 小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:C# 异常捕获
@TOC
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("输入的不是一个整数");
}
}
}
}
这么写,在原本程序会崩溃的情况下,现在程序能够正常的运行结束,并输出:"输入的不是一个整数"
。使用
e
加toString
方法,来打印异常信息:
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
程序执行完毕
使用熟练 异常捕获可以帮助我们提高项目的健壮性,使得程序在发生错误时,仍能解决问题并继续运行,这样也就提高了用户体验。