C#各种异常处理方式总结
什么是异常?
异常是指在程序运行过程中遇到的错误或情况,可以是处理到了程序正常运行范围之外的数据输入或其他问题。
异常处理的意义
在编写程序时,我们需要预先考虑到可能出现的异常情况,以规避程序崩溃或数据丢失等问题。异常处理可以帮助我们及时捕获异常并进行处理,避免程序崩溃或数据不完整。
异常处理方式
C#提供了多种异常处理方式,包括使用try-catch语句、使用throw关键字、使用finally语句块等。
try-catch语句
try-catch
语句用于捕获异常并进行处理。try
语句块中包含可能会抛出异常的代码,当代码执行时遇到异常时,控制权会跳转到catch
语句块中的相应代码。
示例一:
try
{
// 可能抛出异常的代码
int i = Convert.ToInt32("123abc");
}
catch (FormatException e)
{
// 处理FormatException类型的异常
Console.WriteLine("发生格式异常:" + e.Message);
}
catch (Exception e)
{
// 处理其他类型的异常
Console.WriteLine("发生异常:" + e.Message);
}
在示例一中,try
语句块中执行了不合法的转换操作,因此将会抛出一个FormatException
类型的异常。catch
语句块中,我们捕获并处理了该异常。
throw关键字
throw
关键字可以手动抛出一种特定的异常类型,并在抛出时带上相应的异常信息。通常用于在自己的代码中主动抛出异常。
示例二:
public string GetUserInfo(string userName)
{
if (string.IsNullOrEmpty(userName))
{
throw new ArgumentNullException("userName", "用户名不能为空");
}
// 查询用户信息
// ...
}
在示例二中,如果GetUserInfo
方法的userName
参数为空或是null
,我们手动抛出一个ArgumentNullException
类型的异常,并传入异常信息。
finally语句块
finally
语句块用于包含一些无论是否出现异常都需要执行的代码逻辑。
示例三:
StreamReader sr = null;
try
{
sr = new StreamReader("test.txt");
string line = sr.ReadLine();
Console.WriteLine(line);
}
catch (FileNotFoundException e)
{
Console.WriteLine("文件不存在:" + e.Message);
}
catch (Exception e)
{
Console.WriteLine("发生异常:" + e.Message);
}
finally
{
sr?.Close();
}
在示例三中,我们通过StreamReader
读取了test.txt
中的一行文本,如果文件不存在或是出现异常,我们将在相应的catch
语句块中处理这些异常。在处理异常之后,我们需要确保及时关闭文件流,因此在finally
语句块中调用了StreamReader
的Close
方法。
结语
通过使用try-catch
语句、throw
关键字和finally
语句块,我们可以更好地处理和避免异常问题,提高程序的稳定性和鲁棒性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#各种异常处理方式总结 - Python技术站