c#异常处理_C#中的异常处理

c#异常处理

What an exception is?

有什么例外?

An exception is a runtime error; that means an abnormal situation which is created at run time and the program doesn’t execute successfully. Due to the exceptions, our program gets crash.

异常是运行时错误; 这意味着在运行时创建了异常情况,程序无法成功执行。 由于这些异常,我们的程序会崩溃。

There are following common exceptions are occurred during program:

在编程过程中发生以下常见异常:

  • Divide by Zero

    除以零

  • File not found

    文件未找到

  • Array Index out of bound

    数组索引超出范围

  • Null reference exception

    空引用异常

  • Invalid cast exception

    无效的强制转换例外

  • Arithmetic exception

    算术异常

  • Overflow exception

    溢出异常

  • Out of memory exception etc.

    内存不足异常等

Here is an example / program, that will generate exception

这是一个示例/程序,将产生异常

using System;
class Program
{
static void Main()
{
int number1 = 0;
int number2 = 0;
int result  = 0;
Console.WriteLine("Enter Number : ");
number1 = int.Parse(Console.ReadLine());
result = number1 / number2;
Console.WriteLine("Result : " + result);
}
}

When we compile above program it does not produce any error. Compilation result will be like this,

当我们编译以上程序时,它不会产生任何错误。 编译结果将是这样,

------ Build started: Project: ConsoleApplication1, Configuration: Debug x86 ------
ConsoleApplication1 ->C:\Users\Arvind\Documents\Visual Studio 2010\Projects\ihelp\
ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

And, when we execute the program then it produces an exception like this, (in the program, we are trying to divide a number by 0).

而且,当我们执行程序时,它会产生这样的异常(在程序中,我们试图将数字除以0)。

output in C#

The above program generates "Divide by Zero exception" and the program gets crashed. Because variable number1 is divided by number2 and output stored in the result variable. Where, the value of number2 is 0, thus, "divide by zero exception" occurred.

上面的程序生成“被零除的异常” ,该程序崩溃。 因为变量number1被number2除,并且输出存储在结果变量中。 其中, number2的值为0 ,因此发生“除以零例外”

To handle such kind of exceptions, we use exception handling in C#.

为了处理这种异常,我们在C#中使用异常处理。

尝试抓住并最终阻止 (try catch and finally blocks)

Exception handling in C# can be handled using three blocks

C#中的异常处理可以使用三个块来处理

  1. try

    尝试

  2. catch

    抓住

  3. finally

    最后

Syntax of exception handling blocks,

异常处理块的语法,

    try
{
// code that can occur an exception
}
catch(Exception Type)
{
// code to handle the exception 
// code to display the error message
}
finally
{
// code that should be executed 
// whether exception is occurred or not
}

1) try block

1)尝试阻止

In this block, we write the code that can produce an exception or runtime error. For example, in the previous program, there was an exception (divide by zero).

在此块中,我们编写可能产生异常或运行时错误的代码。 例如,在上一个程序中,存在一个异常(除以零)。

2) catch block

2)挡块

This block is executed when the code throws an exception that is written in a try block, catch block catches the exception and we can write the code to handle that exception or any message to display the exception as per user preference.

当代码引发在try块中编写的异常,catch块捕获该异常,并且我们可以编写代码以处理该异常或根据用户喜好显示任何消息以显示该异常时,将执行此块。

Here, we used the exception classes, there are the following exception classes used in C# to catch the exceptions.

在这里,我们使用了异常类,C#中使用了以下异常类来捕获异常。

  1. Exception

    例外

  2. DivideByZeroException

    DivideByZeroException

  3. NullReferenceException

    NullReferenceException

  4. OutOfMemoryException

    OutOfMemoryException

  5. InvalidCastException

    InvalidCastException

  6. ArrayTypeMismatchException

    ArrayTypeMismatchException

  7. IndexOutOfRangeException

    IndexOutOfRangeException

  8. AirthmeticException

    AirthmeticException

  9. OverFlowExecption

    溢出执行

These classes are available in System namespace. In the above classes, the Exception class is a superclass and others are sub-classes, The Exception class can catch any kind of exception thrown by the try block.

这些类在System名称空间中可用。 在上面的类中, Exception类是超类,其他是子类, Exception类可以捕获try块引发的任何类型的异常。

3) finally block

3)最后封锁

finally block is executed in all cases i.e. whether the program is generating an exception or not, before leaving the program, compiler moves to the finally block. This block can be used to write the codes that are compulsory for the execution of program like the closing of the file, releasing the memory, etc.

在所有情况下都将执行finally块,即程序是否正在生成异常,在离开程序之前,编译器将移至finally块。 该块可用于编写执行程序所必需的代码,例如关闭文件,释放内存等。

Here is the code (with exception handling) to handle divide by zero exception.

这是处理零除异常的代码(带有异常处理)。

using System;
class Program
{
static void Main()
{
int number1 = 0;
int number2 = 0;
int result  = 0;
try
{
Console.WriteLine("Enter Number : ");
number1 = int.Parse(Console.ReadLine());
result = number1 / number2;
Console.WriteLine("Result : " + result);
}
catch (DivideByZeroException e)
{
Console.WriteLine(e.Message);
}
finally
{
Console.WriteLine("Program exited normally");
}
}
}

Output

输出量

output in C#

翻译自: https://www.includehelp.com/dot-net/exception-handling-in-csharp.aspx

c#异常处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(转)走进AngularJs(六) 服务

原文地址:http://www.cnblogs.com/lvdabao/p/3464015.html 今天学习了一下ng的service机制,作为ng的基本知识之一,有必要做一个了解,在此做个笔记记录一下。 一、认识服务(service) 服务这个概念其实并不陌…

Linux驱动程序框架以及概述

目录驱动程序三种基本类型(组成)设备驱动程序功能驱动程序的内核模块机制(开发模式)驱动程序框架三个主要部分1、字符设备驱动程序框架2、块设备驱动程序框架2、网络设备驱动程序框架驱动程序三种基本类型(组成&#x…

curl 使用整理(转载)

我一向以为,curl只是一个编程用的函数库。 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法。 curl网站开发指南 阮一峰 整理 curl是一种命令行工具,作用是发出网络请求,然…

Linux内核逻辑结构

linux内核从逻辑上可以分为5个部分: 1、进程调度 进程调度控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的程序。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其他资源,则该进程是不可…

对批量文件重命名

一、 文件夹下存放各种不同名称的同类型文件 F:\test 二、重命名格式从a0开始,数字依次递增,a0,a1,a2,a3… import ospathr"F:\test"#要修改文件的路径 namer"a"#命名从什么开始 num0#默认从0开始,即a0,a1,a2...... …

替换Quartus 自带编辑器 (转COM张)

正文 此处以Quartus II 11.1和Notepad v5.9.6.2为例。 1. 使用QII自动调用Notepad来打开HDL、sdc、txt等文件;并且可以在报错的时候,Notepad可以直接高亮所报错的行(此模式下,Notepad最大化后效果最佳)。 方法&#xf…

四、采集和制作数据集

一、采集数据 安装labelme:pip install labelme 打开labelme:labelme 将收集好的照片(320320,png格式)存放到一个文件夹中,例如我的是F:\test,再此文件夹下再创建个文件夹label用于存放标签文件 使用labelme打开数据…

VMware14.0 安装 CentOS7.2

大致流程 对于VMware14.0安装包用百度网盘下载即可。 链接:https://pan.baidu.com/s/1DEGa47EbI1Fup_MTXhv0xg 提取码:izo6 华为云CentOS7 下载划线的。其他步骤与大致流程里一样。 最后输入root 以及配置的密码即可:密码输入时是没有任何显…

基于visual Studio2013解决C语言竞赛题之1049抓牌排序

题目解决代码及点评/* 功能:插入排序。许多玩牌的人是以这样的方式来对他们手中的牌进行排序的:设手中原有3张牌已排好序,抓1张新牌,若这张新牌的次序在…

【C++进阶】C++创建文件/屏幕输出流类(将信息同时输出到文件和屏幕)

在软件的调试技术中,很重要的一个技术是将软件运行过程中的一些信息写入到“日志文件”中。但是同时还要将信息显示到屏幕上,以方便程序员实时查看这些信息。 最简单的一种办法是这样的: std::ofstream output("debug.log", ios::…

五、加载数据集

之前写过加载数据集的一些小笔记,这里详细内容就不再叙述了 详细学习可以参考该博文二、PyTorch加载数据 一、分析 因为U-net网络架构是输入1通道,大小为(572,572)的灰度图,图片大小无所谓,我的思路是将三通道的图像使用OpenCV进…

CDMA的完整形式是什么?

CDMA:码分多址 (CDMA: Code Division Multiple Access) CDMA is an abbreviation of Code Division Multiple Access. Code Division Multiple Access is a digital cellular technology and displays a network of multiple accesses. The various radio communica…

DSP关于存储器读写、IO读写时序图的注意点

这里的存储器图不涉及插入等待周期。 IO设备的图可以自行减去插入等待周期,然后观察。 存储器读读写 存储器写写读 I/O设备读写操作

oem模式是什么_OEM的完整形式是什么?

oem模式是什么OEM:原始设备制造商 (OEM: Original Equipment Manufacturer) OEM is an abbreviation of "Original Equipment Manufacturer". Its meaning has changed over time. In former times, it alluded to a corporation that manufactures produ…

妈了个巴卡

配置文件修改: 一、打开PC端微信,打开咩了个咩小程序,点进入第一关,之后再关掉小程序 二、PC端微信设置里面,找到管理文件,打开文件夹 三、Applet下按修改日期找到a9结尾的文件 四、接着进入\usr\gamecac…

【C++进阶】利用重载二元运算符改进平面向量类Vec2D

先前回顾 在【C进阶】 遵循TDD原则,实现平面向量类(Vec2D)中我们初步实现了Vec2D内容,现在做出一定的改进: 实现Vec2D的一半二元算数运算符重载 1、 - (两个Vec2D对象运算以及1个Vec2D对象与一个double数运算) 2、*(点乘和数乘) 同时将之前…

简单的群体测试方案C++代码(Group testing against Covid-19)

原理参考链接 https://www.econstor.eu/handle/10419/221811 http://www.magigen.com/h-nd-348.html 文章原理回顾 文章比较了两种估计人群中病毒流行率的方法: 1、个体测试,即对12000人的样本进行病毒测试,并采用标准二项测试得出95%的置…

DDOS小测试

一、F12打开开发者工具,刷新待攻击的网站,重新获得一次请求 二、user-agent为浏览器的合法标识符 user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 是键值对的形式&…

融合注意力机制的YOLOv5火焰识别+Arduino UNO R3实现5s内连续识别到火焰,警报灯红灯亮起

效果:摄像头捕获室内图像,将视频实时通过串口通讯传递给改进之后的YOLOv5神经网络进行火焰识别,若5s内连续检测到有火焰,警报灯变红,进入危险状态。5s之内未连续出现火焰,警报灯变绿,进入安全状…

Moon.Orm性能报告

以下为有网友公司的评估测试及使用规范 大家可以下载word看看 http://pan.baidu.com/s/1hquvRuc 一、和ADO.NET进行的压力测试 说明:2000并发用户,此图为一网友公司对moon.orm的测评 二、和ADO.NET的性能对比测试 说明:同时请求10000条数据&a…