C# 中 finally 的用法
2024-10-21 18:49:04
当一个异常抛出时,它会改变程序的执行流程。因此不能保证一个语句结束后,它后面的语句一定会执行,在 C# 中这个问题可以用 finally 解决。
为了确保一个语句总是能执行(不管是否抛出异常),需要将该语句放到一个 finally 块中,finally 要么紧接在 try 块之后,要么紧接在 try 块之后的最后一个 catch 处理程序之后。
只要程序进入与一个 finally 块关联的 try 块,则 finally 块始终都会运行 -- 即使发生了一个异常。
代码如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace CheckedAndUnchecked
{
class Program
{
static void Main(string[] args)
{
{
try
{
int a;
string b; Console.WriteLine("请输入一个整数");
b = Console.ReadLine();
a = int.Parse(b);
} catch (Exception ex)
{
Console.WriteLine(ex);
} finally
{
Console.WriteLine("finally块内总是能运行到"); // 总是能执行到这里
}
}
}
}
}
因为 try 会捕捉异常,在此处输入 1.0,格式不正确,则 runtime 会捕捉到异常,但 finally 块内的代码却始终会执行。
执行后结果如下:
如果一个异常被抛出,且在本地捕捉到,则首先运行异常处理程序,然后运行 finally 块;
如果异常未能在本地捕捉到,则首先运行 finally 块,再去上一级搜索一个匹配的异常处理程序并运行。
最新文章
- /etc/ppp/chap-secrets
- Lesson 19 Sold out
- 《C++ 101条建议》学习笔记——第一章快速入门
- C# DllImport“调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配 ”
- 一个页面中显示多个button时总行数计算公式。
- GPS围栏两个多边形相交问题的奇葩解法
- 如何伪装成为一名前端(JS方向)
- 1014 C语言文法
- Hadoop MapReduce概念学习系列之mr程序组件全貌(二十)
- 永久关闭防火墙和selinux
- C语言知识总结
- iOS 主动抛出异常
- 论文笔记(4):Fully Convolutional Networks for Semantic Segmentation
- 用深信服AC控制方位话机注册链路的开、关
- Jquery动态添加/删除表格行和列
- 如何将SqlServer中表结构以及表数据全部导出
- Java学习——Applet菜单
- h5项目如何打成war包
- git命令:全局设置用户名邮箱配置
- t添加最佳视口