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

windows C#-异常和异常处理概述

C# 语言的异常处理功能有助于处理在程序运行期间发生的任何意外或异常情况。 异常处理功能使用 try、catch 和 finally 关键字来尝试执行可能失败的操作、在你确定合理的情况下处理故障,以及在事后清除资源。 公共语言运行时 (CLR)、.NET/第三方库或应用程序代码都可生成异常。 异常是使用 throw 关键字创建而成。

在许多情况下,异常并不是由代码直接调用的方法抛出,而是由调用堆栈中再往下的另一方法抛出。 如果发生这种异常,CLR 会展开堆栈,同时针对特定异常类型查找包含 catch 代码块的方法,并执行它找到的首个此类 catch 代码块。 如果在调用堆栈中找不到相应的 catch 代码块,将会终止进程并向用户显示消息。

在以下示例中,方法用于测试除数是否为零,并捕获相应的错误。 如果没有异常处理功能,此程序将终止,并显示 DivideByZeroException was unhandled 错误。

public class ExceptionTest
{static double SafeDivision(double x, double y){if (y == 0)throw new DivideByZeroException();return x / y;}public static void Main(){// Input for test purposes. Change the values to see// exception handling behavior.double a = 98, b = 0;double result;try{result = SafeDivision(a, b);Console.WriteLine("{0} divided by {1} = {2}", a, b, result);}catch (DivideByZeroException){Console.WriteLine("Attempted divide by zero.");}}
}
异常概述

异常具有以下属性:

  • 异常是最终全都派生自 System.Exception 的类型;
  • 在可能抛出异常的语句周围使用 try 代码块;
  • 在 try 代码块中出现异常后,控制流会跳转到调用堆栈中任意位置上的首个相关异常处理程序。 在 C# 中,catch 关键字用于定义异常处理程序;
  • 如果给定的异常没有对应的异常处理程序,那么程序会停止执行,并显示错误消息;
  • 除非可以处理异常并让应用程序一直处于已知状态,否则不捕获异常。 如果捕获 System.Exception,使用 catch 代码块末尾的 throw 关键字重新抛出异常;
  • 如果 catch 代码块定义异常变量,可以用它来详细了解所发生的异常类型;
  • 使用 throw 关键字,程序可以显式生成异常;
  • 异常对象包含错误详细信息,如调用堆栈的状态和错误的文本说明;
  • 即使引发异常,finally 代码块中的代码仍会执行。 使用 finally 代码块可释放资源。例如,关闭在 try 代码块中打开的任何流或文件;
  • .NET 中的托管异常在 Win32 结构化异常处理机制的基础之上实现;

相关文章:

windows C#-异常和异常处理概述

C# 语言的异常处理功能有助于处理在程序运行期间发生的任何意外或异常情况。 异常处理功能使用 try、catch 和 finally 关键字来尝试执行可能失败的操作、在你确定合理的情况下处理故障,以及在事后清除资源。 公共语言运行时 (CLR)、.NET/第三方库或应用程序代码都可…...

每日一题——第一百二十四题

题目&#xff1a;进制转换 #pragma once#include<stdio.h> #include<ctype.h> #include<string.h>/// <summary> /// //将字符串表示的任意进制数转为十进制 /// </summary> /// <param name"str">字符串</param> /// &l…...

在 CentOS 7 上设置 OpenResty 开机启动

在 CentOS 7 上设置 OpenResty 开机启动&#xff0c;可以按照以下步骤进行操作&#xff1a; 创建 Systemd 服务文件&#xff1a; 首先&#xff0c;您需要为 OpenResty 创建一个 Systemd 服务文件。使用文本编辑器&#xff08;如 vi 或 nano&#xff09;创建一个新的服务文件。 …...

势不可挡 创新引领 | 生信科技SOLIDWORKS 2025新品发布会·苏州站精彩回顾

2024年11月01日&#xff0c;由生信科技举办的SOLIDWORKS 2025新产品发布会在江苏苏州圆满落幕。现场邀请到制造业的专家学者们一同感受SOLIDWORKS 2025最新功能&#xff0c;探索制造业数字化转型之路。 在苏州站活动开场&#xff0c;达索系统专业客户事业部华东区渠道经理马腾飞…...

数仓之全量表、增量表、快照表、切片表、拉链表的基本概念

文章摘自&#xff1a;数仓之全量表、增量表、快照表、切片表、拉链表-腾讯云开发者社区-腾讯云 一、全量表 记录每天所有最新状态的数据&#xff0c;有无变化都要上报&#xff0c;每次往全量表里面写数据都会覆盖之前的数据 缺点&#xff1a;不能记录数据的历史变化&#xff…...

【富集分析GSEA】如何理解富集分析以及应用

如何理解富集分析 富集分析不同的方式 富集分析 不同的方式 直接使用疾病特征进行富集分析&#xff08;不翻转上调和下调的基因&#xff09; 目的&#xff1a;如果你的目标是了解疾病状态的生物学特征和功能路径&#xff0c;那么应该直接使用疾病特征&#xff08;包含疾病状态…...

一七五、HTML 不同类型的事件及其说明和示例

HTML 事件处理程序是通过 JavaScript 来捕获和响应不同的用户操作、系统事件或浏览器事件。下面是不同类型的事件及其说明和示例。 Window 事件 1. onresize 当浏览器窗口的大小发生变化时触发。 <!DOCTYPE html> <html lang"en"> <head><m…...

数量少的连锁店要不要用智能巡检?

无论是在新闻报道中&#xff0c;还是企业定制目标客户时&#xff0c;人们都更喜欢聚焦原本就已经站在各行业金字塔尖的那 1%&#xff0c;剩下的 99% 却常常被忽略。 比如此刻我正在搜索中小型连锁企业智能巡检相关的资讯&#xff0c;但网页展示的结果基本围绕着「中大型、1000门…...

【CSS】外边距塌陷

问题背景 在移动应用页面开发中&#xff0c;父元素和子元素外边距合并&#xff0c;导致布局效果和预期不一致。 <template><view class"container"><view class"card"><p>TEST</p></view></view> </templa…...

WPF MVVM入门系列教程(二、依赖属性)

说明&#xff1a;本文是介绍WPF中的依赖属性功能&#xff0c;如果对依赖属性已经有了解了&#xff0c;可以浏览后面的文章。 为什么要介绍依赖属性 在WPF的数据绑定中&#xff0c;密不可分的就是依赖属性。而MVVM又是跟数据绑定紧密相连的&#xff0c;所以在学习MVVM之前&…...

Springboot集成syslog+logstash收集日志到ES

Springboot集成sysloglogstash收集日志到ES 1、背景 Logstash 是一个实时数据收集引擎&#xff0c;可收集各类型数据并对其进行分析&#xff0c;过滤和归纳。按照自己条件分析过滤出符合的数据&#xff0c;导入到可视化界面。它可以实现多样化的数据源数据全量或增量传输&…...

Devops业务价值流:软件研发最佳实践

在当今快速迭代的软件开发环境中&#xff0c;DevOps业务价值流已成为推动软件研发高效与质量并重的关键实践。软件研发阶段作为产品生命周期的核心环节&#xff0c;其每一步都承载着将创意转化为现实的重要使命。在历经需求澄清的精准定位、架构设计的宏观规划以及项目初始化的…...

Matplotlib 绘图艺术:从新手到高手的全面指南

引言 在数据科学和机器学习领域&#xff0c;数据可视化是一项至关重要的技能。一个优秀的可视化图表可以直观地展示数据的内在规律&#xff0c;帮助我们更好地理解数据&#xff0c;并做出更明智的决策。而在众多的绘图库中&#xff0c;Matplotlib 是 Python 中最强大、最灵活的…...

[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-windows)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

SQLI LABS | Less-33 GET-Bypass AddSlashes()

关注这个靶场的其它相关笔记&#xff1a;SQLI LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;过关流程 输入下面的链接进入靶场&#xff08;如果你的地址和我不一样&#xff0c;按照你本地的环境来&#xff09;&#xff1a; http://localhost/sqli-labs/Less-33/ "Ad…...

界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...

flink 内存配置(一):设置Flink进程内存

flink 内存配置&#xff08;一&#xff09;&#xff1a;设置Flink进程内存 flink 内存配置&#xff08;二&#xff09;&#xff1a;设置TaskManager内存 flink 内存配置&#xff08;三&#xff09;&#xff1a;设置JobManager内存 flink 内存配置&#xff08;四&#xff09;…...

贪心算法习题其三【力扣】【算法学习day.20】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…...

速盾:高防cdn针对网站的好处有哪些?

高防CDN&#xff08;Content Delivery Network&#xff09;是一种网络分发技术&#xff0c;它能够提供可靠的网站高防护服务&#xff0c;有效地解决了网站遭受DDoS攻击、恶意流量等网络安全问题。高防CDN的应用已经变得越来越广泛&#xff0c;对于网站的好处也变得越发明显。 …...

【Java SE语法】抽象类(abstract class)和接口(interface)有什么异同?

目录 1. 抽象类与接口的基本概念 1.1 抽象类 1.2 接口 2. 抽象类与接口的异同 2.1 相同点 2.2 不同点 3. 拓展知识&#xff1a;多态与设计模式 3.1 多态 3.2 设计模式 4. 结论 在软件工程中&#xff0c;设计模式和代码结构的选择对于构建可维护、可扩展的系统至关重要…...

终极虚拟定位指南:FakeLocation让你的Android设备位置自由

终极虚拟定位指南&#xff1a;FakeLocation让你的Android设备位置自由 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 你是否厌倦了应用的位置限制&#xff1f;想要在社交软件中保…...

别再乱接线了!用PulseView+逻辑分析仪抓STM32 SPI波形,保姆级避坑指南

逻辑分析仪实战&#xff1a;精准捕获STM32 SPI波形的五大黄金法则 当你在调试STM32的SPI外设时&#xff0c;是否遇到过这样的困境&#xff1a;代码配置完全按照手册操作&#xff0c;但逻辑分析仪显示的波形却充满毛刺、数据残缺不全&#xff1f;这往往不是代码逻辑的问题&#…...

基于XCKU060 FPGA的高速数据采集卡硬件架构与开发实践

1. 项目概述与核心价值最近在做一个高速数据采集与实时处理的项目&#xff0c;对市面上的FPGA加速卡做了一圈调研和测试。其中&#xff0c;青翼这款基于XCKU060 FPGA的4路SFP光纤数据处理板卡&#xff08;型号PCIE734&#xff09;给我留下了挺深的印象。它本质上是一张插在服务…...

CW32L083定时器中断全解析:从基础定时到PWM捕获的实战指南

1. 项目概述与核心价值最近在做一个基于CW32L083的低功耗数据采集项目&#xff0c;其中有一个核心需求是每隔100毫秒精确采集一次传感器数据。为了实现这个看似简单的定时功能&#xff0c;我不得不把CW32的定时器子系统从头到尾捋了一遍。这不捋不知道&#xff0c;一捋才发现&a…...

淄博性价比高的别墅开发哪家强

淄博这几年改善置业需求越来越旺&#xff0c;不少攒了钱想换带院子的别墅&#xff0c;却普遍犯难&#xff1a;要么主城核心区的别墅单价破两万&#xff0c;一套下来几百万&#xff0c;门槛太高&#xff1b;要么远郊的小开发商别墅&#xff0c;要么产权不清、品质缩水&#xff0…...

别等 SQL 跑慢了再靠猜,NineData 怎样把问题一步步看清

SQL 变慢最怕的不是慢本身&#xff0c;而是大家一开始只能靠猜。明明语法没报错&#xff0c;业务一上线却卡住了&#xff1b;多了一个函数、少了一个索引&#xff0c;或者关联顺序不合适&#xff0c;就可能让数据库白白扫描一大堆数据。在很多团队里&#xff0c;这类问题最早往…...

从CVE-2017-11882到CVE-2018-0802:一个Office漏洞的“补丁绕过”实战复现与调试分析

从CVE-2017-11882到CVE-2018-0802&#xff1a;Office漏洞补丁绕过的深度解析与实战复现 漏洞背景与历史沿革 2017年11月&#xff0c;微软修补了一个存在近20年的Office公式编辑器组件漏洞&#xff08;CVE-2017-11882&#xff09;&#xff0c;该漏洞允许攻击者通过特制的RTF文档…...

GitHub下载速度提升10倍:Fast-GitHub终极解决方案

GitHub下载速度提升10倍&#xff1a;Fast-GitHub终极解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为GitHub的龟速下…...

2026 AI低代码实测:原理拆解+主流形态,避坑指南

2026年&#xff0c;AI低代码早已不是“概念炒作”&#xff0c;而是企业数字化转型的核心工具。Gartner预测&#xff0c;2026年全球70%以上新应用将采用低代码/无代码构建&#xff0c;较2023年45%的渗透率实现跨越式增长&#xff1b;IDC数据显示&#xff0c;同期全球AI低代码市场…...

保姆级教程:用YOLOv5+DeepSort从零搭建一个车辆计数测速系统(附完整源码和数据集)

从零构建智能交通分析系统&#xff1a;YOLOv5与DeepSort实战指南 在智能交通管理领域&#xff0c;计算机视觉技术正发挥着越来越重要的作用。本文将带您一步步搭建一个完整的车辆计数与测速系统&#xff0c;结合YOLOv5目标检测和DeepSort多目标跟踪算法&#xff0c;实现从视频流…...