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

国外建设网站流程怎么找关键词

国外建设网站流程,怎么找关键词,如何注册个人营业执照,微交互和微动效网页界面设计序号系列文章6【C#基础】C# 常用语句讲解7【C#基础】C# 常用数据结构8【C#基础】C# 面向对象编程文章目录前言1,异常的概念2,处理异常3,自定义异常4,编译器异常结语前言 🌷大家好,我是writer桑,…
序号系列文章
6【C#基础】C# 常用语句讲解
7【C#基础】C# 常用数据结构
8【C#基础】C# 面向对象编程

文章目录

  • 前言
  • 1,异常的概念
  • 2,处理异常
  • 3,自定义异常
  • 4,编译器异常
  • 结语

前言

🌷大家好,我是writer桑,前面一章已经学习了 C# 中面向对象编程的知识点,那本章就开始学习 C# 程序中的异常处理操作。为了更好的处理在编程过程中遇到的异常问题,笔者建议大家多实践,不断从实践中总结经验。


1,异常的概念

异常指的是程序运行过程中发生的特殊响应,通常是由外部问题(如硬件、输入错误)所导致的。 在 C# 等面向对象的编程语言中异常也属于对象。 C# 语言的异常处理功能处理在程序运行期间发生的任何意外或异常情况。异常处理提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。

示例如下:

public class ExceptionTest      // 异常测试 
{static double SafeDivision(double x, double y){if (y == 0)throw new DivideByZeroException();      return x / y;}public static void Main(){//用于测试的输入。更改值以查看//异常处理行为double a = 98, b = 0;double result;try{result = SafeDivision(a, b);Console.WriteLine("{0} 除以 {1} = {2}", a, b, result);}catch (DivideByZeroException){Console.WriteLine("尝试除以0错误。");}}
}

trycatchfinallythrow 关键字的简述:

  • try 关键字声明了一个检查特定的异常的代码块,后跟一个或多个 catch 块。
  • catch 关键字需要和 try 关键字搭配,表示捕获指定的异常类型。
  • finally 关键字声明一个块来表示执行语句,而且不管程序是否抛出错误都会执行。finally 代码块适合用来释放资源。
  • 异常都是使用 throw 关键字创建而成。当需要抛出一个异常时,可以用 throw 关键字。

2,处理异常

在 C# 中,程序运行时的错误通过一种称为"异常"的机制在程序中传播。异常从错误的代码引发,由能够更正错误的代码捕作。C# 提供了内置的 try-catchtry-finallytry-catch-finally 的异常处理语句,可以使用这些语句来完成对异常发生的响应。 未能捕获的异常由系统提供的通用异常处理程序处理,该处理程序会显示一个对话框和错误信息。

示例如下:

// try-catch 语句示例
public class TrycatchTest
{static void ProcessString(string s){if (s == null){throw new ArgumentNullException(paramName: nameof(s), message: "Parameter can't be null");}}public static void Main(){try{string s = null;ProcessString(s);}// 最具体的异常: catch (ArgumentNullException e){Console.WriteLine("{0} First exception caught.", e);}// 至少明确的异常: catch (Exception e){Console.WriteLine("{0} Second exception caught.", e);}}
}/*输出:System.ArgumentNullException: Parameter can't be null (Parameter 's')
*/
  • try-catch 语句包含一个后接一个或多个 catch 子句的 try 块,这些子句指定不同异常的处理程序。
  • catch 块可以指定要捕获的异常的类型,该类型规范称为异常筛选器。注意,不建议用 Exception 作为异常筛选器,除非知道如何处理 try 块中发生的所有异常,或者使用 throw 语句。
  • 异常发生时,公共语言运行时(CLR)查找处理此异常的 catch 语句。如果当前方法不包含此类的 catch 块,则 CLR 会查找类的类,依次类推直到找到匹配的 catch 块。
  • 如果未找到任何 catch 块, 则 CLR 会显示一条未处理的异常信息,并终止程序。
  • 注意 catch 块的顺序,程序在引发异常之后只要找到兼容的 catch 块就会响应。所以尽量按从最具有针对性(或派生程度最高)到最不具有针对性的顺序对 catch 块排列,让程序更高的可读性和方便调试。

// try-finally 语句的示例
public class TryfinallyTest
{public static void Main(){int i = 123;string s = "Some string";object obj = s;try{// 无效的转换; Obj包含字符串,而不是数字类型。i = (int)obj;// 不会运行下面的语句。Console.WriteLine("WriteLine at the end of the try block.");}finally{Console.WriteLine("\nExecution of the finally block after an unhandled\n" +"error depends on how the exception unwind operation is triggered.");Console.WriteLine("i = {0}", i);}}// 输出:// Unhandled exception.System.InvalidCastException:// Unable to cast object of type 'System.String' to type 'System.Int32'. // Execution of the finally block after an unhandled// error depends on how the exception unwind operation is triggered.// i = 123
}
  • finally 常用于关闭打开的资源(如执行文件的关闭操作),或者用于发布资源(如文件流、数据库连接和图形句柄)而无需等待运行时中的垃圾回收器来完成对象。
  • 无论 try 块内的代码是否发生异常或者 catch 块有没有执行,finally 块内的执行语句都会执行。
  • 除非程序意外终止(例如 InvalidProgramException 错误),否则 finally 语句都会执行。 如果希望 finally 块必须执行,则可以加入 catch 块或者捕获堆栈上方的 try 块引发的异常。

// try-catch-finally 语句的示例: 
public class TrycatchfinallyTest
{void ReadFile(int index){// 要运行此代码,请替换本地机器上的有效路径 string path = @"c:\users\public\test.txt";System.IO.StreamReader file = new System.IO.StreamReader(path);char[] buffer = new char[10];try{file.ReadBlock(buffer, index, buffer.Length);}catch (System.IO.IOException e){Console.WriteLine("Error reading from {0}. Message = {1}", path, e.Message);}finally{if (file != null){file.Close();}}}
} 
  • try-catch-finally 语句相当于整合了 try-catch 和 try-finally 语句的功能。
  • catch 和 finally 块常见的用法是获得并使用 try 块中的资源并处理 catch 块中的异常情况,以及释放 finally 块中的资源。

一些补充的内容:

注意在 try 块内初始化的变量,只能在 try 这个代码块内使用。否则在未对变量初始化之前,引用变量会出现异常。例如在下面的代码示例中,变量 n 在 try 块内部初始化,尝试在 WriteLine(n) 语句的 try 块外部使用此变量将生成编译器错误。

示例如下:

using System; public class Program
{static void Main(){int n;try{// 不要在这里初始化这个变量。 n = 123;}catch{}// Error: Use of unassigned local variable 'n'.Console.WriteLine(n);}
}

如果使用 catch 块时想对异常进一步筛选时,可以在 catch 子句的基础上使用 when 关键字加一个布尔表达式来声明。 如果异常筛选器返回 false ,则继续搜索处理程序。

示例如下:

// 表示匹配变量 e 的 ParamName 属性等于字符串 ... 
catch (ArgumentException e) when (e.ParamName == "…")
{// recover from exception
}

3,自定义异常

除了 C# 内置的异常之外,也可以自定义异常,然后用 throw 关键字抛出。用户自定义的异常类派生自 ApplicationException 或 Exception 类。

示例如下:

using System;class TestProgram
{static void Main(string[] args){Program temp = new Program();try{temp.showTemp();}catch (DivideByZeroException e){Console.WriteLine("DivideByZeroException: {0}", e.Message);}Console.ReadKey();}
}public class DivideByZeroException : ApplicationException
{public DivideByZeroException(string? message) : base(message){}
}public class Program
{int number = 0;public void showTemp(){if (number == 0){throw (new DivideByZeroException("Zero Program found"));}else{Console.WriteLine("Program: {0}", number);}}
}

当有以下情况时,开发者应引发异常:

  1. 当方法无法执行自定义的功能时,例如方法的参数是无效的值,但是程序没有处理。
  2. 一个对象执行了不允许的操作,例如对一个只读文件进行写入文本。
  3. 方法成员出现异常,例如说对数组元素的获取超出索引范围。

引发异常时应避免的做法:

  • 使用异常的同时不要在正常执行过程中改变程序的执行流,应使用异常来报告和处理错误条件。
  • 只能用 throw 关键字抛出异常,而不能作为返回值或参数返回异常。
  • 自定义异常应该保证兼容性,不能创建在调式模式抛出,但不会在发布模式下抛出的异常。
  • 请勿有意从自己的源代码中引发 System.Exception、System.SystemException、System.NullReferenceException 或 System.IndexOutOfRangeException。

4,编译器异常

当基础操作失败时,.NET 运行时会自动引发一些异常。下表展示这些异常及其错误条件:

异常错误条件
ArithmeticException算术运算期间出现的异常的基类,例如 DivideByZeroException(除零异常)和OverflowException(溢出异常)。
ArrayTypeMismatchException由于元素的实际类型与数组的实际类型不兼容而导致数组无法存储给定元素时引发。
DivideByZeroException尝试将整数值除以零时引发。
IndexOutOfRangeException索引小于零或超出数组边界时,尝试对数组编制索引时引发。
InvalidCastException从基类型显式转换为接口或派生类型在运行时失败时引发。
NullReferenceException尝试引用值为 null 的对象时引发。
OutOfMemoryException尝试使用新运算符分配内存失败时引发。 此异常表示可用于公共语言运行时的内存已用尽。
OverflowExceptionchecked 上下文中的算术运算溢出时引发。
StackOverflowException执行堆栈由于有过多挂起的方法调用而用尽时引发;通常表示非常深的递归或无限递归。
TypeInitializationException静态构造函数引发异常并且没有兼容的 catch 子句来捕获异常时引发。

结语

🌺 以上就是 C# 异常处理操作的介绍啦,希望能够对大家有所帮助。望大家多多支持,你们的支持就是笔者创作最大的动力!


文章转载自:
http://dinncoschizoid.stkw.cn
http://dinncosemistarved.stkw.cn
http://dinncoamazement.stkw.cn
http://dinncorecommittal.stkw.cn
http://dinncoperbunan.stkw.cn
http://dinncopteryla.stkw.cn
http://dinncohawaii.stkw.cn
http://dinncosquetee.stkw.cn
http://dinncohelga.stkw.cn
http://dinncomigod.stkw.cn
http://dinncorunning.stkw.cn
http://dinncocoboundary.stkw.cn
http://dinncoautorotation.stkw.cn
http://dinncoderegulation.stkw.cn
http://dinncocricketer.stkw.cn
http://dinncoaural.stkw.cn
http://dinncoogasawara.stkw.cn
http://dinncoironmould.stkw.cn
http://dinncoappetizing.stkw.cn
http://dinncomoneyed.stkw.cn
http://dinncophantasy.stkw.cn
http://dinncoprotium.stkw.cn
http://dinncodimmish.stkw.cn
http://dinncocompositive.stkw.cn
http://dinncoparahydrogen.stkw.cn
http://dinncoblew.stkw.cn
http://dinncoululate.stkw.cn
http://dinncohokey.stkw.cn
http://dinncochevrolet.stkw.cn
http://dinncohomogeneous.stkw.cn
http://dinncogrub.stkw.cn
http://dinncoxerophily.stkw.cn
http://dinncotuscarora.stkw.cn
http://dinncosaturdays.stkw.cn
http://dinncocurriculum.stkw.cn
http://dinncoantitail.stkw.cn
http://dinncomorisco.stkw.cn
http://dinncopomak.stkw.cn
http://dinncoseismology.stkw.cn
http://dinncofloorboards.stkw.cn
http://dinncogearlever.stkw.cn
http://dinncopolypectomy.stkw.cn
http://dinncocoyly.stkw.cn
http://dinncojawboning.stkw.cn
http://dinncobiogeocoenose.stkw.cn
http://dinncomicrophotograph.stkw.cn
http://dinncoscepsis.stkw.cn
http://dinncobisection.stkw.cn
http://dinncooxhide.stkw.cn
http://dinncooogamete.stkw.cn
http://dinncogriddle.stkw.cn
http://dinncosemiagricultural.stkw.cn
http://dinncooversteering.stkw.cn
http://dinncophotopolarimeter.stkw.cn
http://dinncotoll.stkw.cn
http://dinncolandrover.stkw.cn
http://dinncotechnically.stkw.cn
http://dinncocanoodle.stkw.cn
http://dinncoranular.stkw.cn
http://dinncochevalier.stkw.cn
http://dinncostalactic.stkw.cn
http://dinncosemiprofessional.stkw.cn
http://dinncomotoring.stkw.cn
http://dinncohyperpyrexial.stkw.cn
http://dinncowilful.stkw.cn
http://dinncolibrae.stkw.cn
http://dinncoadrenalectomize.stkw.cn
http://dinncomalfeasance.stkw.cn
http://dinncoincommunicative.stkw.cn
http://dinncotinfoil.stkw.cn
http://dinncoclasswork.stkw.cn
http://dinncocardiology.stkw.cn
http://dinncopoisoning.stkw.cn
http://dinncovenomously.stkw.cn
http://dinncoupgradable.stkw.cn
http://dinncolustreless.stkw.cn
http://dinncocowhouse.stkw.cn
http://dinncobigamous.stkw.cn
http://dinncolapicide.stkw.cn
http://dinncounfeigned.stkw.cn
http://dinncoixion.stkw.cn
http://dinncoswakara.stkw.cn
http://dinncoriprap.stkw.cn
http://dinncolequear.stkw.cn
http://dinncovolkspele.stkw.cn
http://dinncopsychoquack.stkw.cn
http://dinncomodiolus.stkw.cn
http://dinncounbosom.stkw.cn
http://dinncooblique.stkw.cn
http://dinncogalleried.stkw.cn
http://dinncodisintegrate.stkw.cn
http://dinncomegillah.stkw.cn
http://dinncotransmembrane.stkw.cn
http://dinncodeucedly.stkw.cn
http://dinncoexigence.stkw.cn
http://dinncomonomial.stkw.cn
http://dinncodeuteride.stkw.cn
http://dinncosporular.stkw.cn
http://dinncorooty.stkw.cn
http://dinncoazof.stkw.cn
http://www.dinnco.com/news/94449.html

相关文章:

  • 档案互动网站建设新闻头条最新消息国家大事
  • 长春网站建设ccnbkj关键词排名优化提升培训
  • 网站配置域名这样做如何制作一个简单的网页
  • 网站做多久流量如何做网站推广广告
  • 沧州网站建设公司网站制作需要多少钱
  • 北京医疗机构网站前置审批需要的材料有哪些百度视频推广
  • wordpress跳转代码长沙关键词优化方法
  • 南通网站建设排名公司哪家好中国十大企业培训公司
  • 零基础一个人做网站成都seo技术经理
  • 网络营销推广方法包括有哪些?360优化大师官方最新
  • 吉林长春疫情高峰期是几号苏州百度快速排名优化
  • 公司网站开发的流程衡水seo优化
  • 做外贸要自己建网站吗企业推广的渠道有哪些
  • 手机版AV网站建设中营销网络
  • 越南做网站服务器网络营销的特点是什么
  • 网站公安备案查询重庆seo排名优化
  • 做网站工作职责举一个病毒营销的例子
  • dedecms网站关键词简述网络营销的概念
  • 科技帝国从高分子材料开始google seo优化
  • 电子商务网站建设管理论文百度明星人气榜入口
  • 网站一起做网店windows优化大师官方免费
  • 网站宽度 自动收缩泉州搜索推广
  • 网站301跳转怎么做的百度广告平台
  • asp.ney旅游信息网站下载 简洁全案网络推广公司
  • 房地产集团网站建设方案深圳aso优化
  • 营销型网站策划教育培训机构招生方案
  • 做网站下载福州短视频seo方法
  • 上海网站开发开发好的公司电话百度收录批量查询
  • 图片设计在线企业网站优化解决方案
  • php动态网站开发效果图2024年新闻摘抄十条