C#异常处理详解
异常介绍
1、System.Exception类
Message属性:发生异常的原因和异常的内容
Souce属性:抛出异常程序集的名称
StackTrace属性:发生异常的方法调用情况
InnerException属性:次异常中包含的异常
2、try{}catch{}finally{}
处理异常
a、不带参数的catch和catch(Exception)是有区别的
catch(Exception)可以捕获所有以Exception类派生的异常,而不带参数的catch可以捕获所有异常,不管异常是不是从Exception类派生。
b、与catch配套的catch和finally是可选的,但二者必选其一。一个try可对应多个catch,但一个try只能对应一个finally。
c、不论try中是否发生异常,finally中的语句一定会被执行。
异常传播
如果异常发生后,没有被相应的catch捕获,那么异常将沿调用堆栈逐渐向上传递,直到遇到合适的catch语句或传递到最底层的调用方法为止。如都没有找到相应的catch,则异常交付.net公共语言运行时,公共语言运行时弹出一个对话框来显示异常信息。
抛出异常throw
1、throw 变量名;
必须是Exception异常或有Exception派生的类型
2、throw;
这个throw语句只有一个throw关键字,只能用在catch语句块中,该语句的意思是抛出当前catch语句所捕获的异常。
自定义异常
遵循原则
1、避免使用深的异常类继承层次结构
2、自定义异常类必须继承System.Exception类或其他几种基本常见异常类
3、自定义异常类名称要以Exception结尾
4、自定义异常类应该可以序列化
5、自定义异常类应该至少实现与Exception类相同的以下四个构造函数
代码如下:
public MyException(){}
public MyException(string message){}
public MyException(string message,Exception inner){}
protected MyException(System.Runtime.Serialization.SerializationInfoinfo,System.Runtime.Serialization.StreamingContext context){}
6、自动插入自定义异常类框架
在编辑器中输入Exception并按键,即可得到自定义异常类框架。
相关推荐
-
.NET(C#):Emit创建异常处理的方法
目录 Emit异常处理流程 显示Exception对象的Message属性 返回目录 Emit异常处理流程来看这种C#异常处理代码: 复制代码 代码如下: static void doo(Exception e) { try { throw e; } catch (ApplicationException ex) { Console.WriteLine("捕获ApplicationException"); } catch { Console.WriteLine("捕获Exce
-
解析C#中断言与异常的应用方式及异常处理的流程控制
断言与异常(Assertion Vs Exception) 在日常编程实践中,断言与异常的界限不是很明显,这也使得它们常常没有被正确的使用.我也在不断的与这个模糊的怪兽搏斗,仅写此文和大家分享一下我的个人看法.我想我们还可以从很多角度来区别断言和异常的使用场景,欢迎大家的意见和建议. 异常的使用场景:用于捕获外部的可能错误 断言的使用场景:用于捕获内部的不可能错误 我们可以先仔细分析一下我们在.net中已经存在的异常. System.IO.FileLoadException SqlExcepti
-
C#异常处理总结及简单实例
C#异常处理总结及简单实例 一.异常处理的理解? 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常. 因此处理这种错误,就称为异常处理. 二.异常处理如何操作? C# 异常处理时建立在四个关键词之上的:try.catch.finally 和 throw. 1.try:一个 try 块标识了一个将被激活的特定的异常的代码块.后跟一个或多个 catch 块. 2.catch:程序通过异常处理程序捕获异常.catch 关键字表示异常的捕获. 3.finally:finally
-
C#异常处理中try和catch语句及finally语句的用法示例
使用 try/catch 处理异常 try-catch 块的用途是捕捉和处理工作代码所生成的异常. 有些异常可以在 catch 块中处理,解决问题后不会再次引发异常:但更多情况下,您唯一能做的是确保引发适当的异常. 示例 在此示例中,IndexOutOfRangeException 不是最适当的异常:对本方法而言 ArgumentOutOfRangeException 更恰当些,因为错误是由调用方传入的 index 参数导致的. class TestTryCatch { static int G
-
C#异常处理的一些经验和技巧
1.什么时候该异常处理?1)代码最外层,如WinFrom,避免用户看到内部异常信息用户体验不好,或者造成程序崩溃.2)遇到异常需要恢复状态或者重试的地方.例如连接数据库偶然失败了,可以有个重连机制,在Catch块重新连接数据库.3)对于一系列有可能失败的任务,其中有一个任务失败,不想影响到其他任务.例如要上传100张图片,不想因为一张图片上传发生异常而失败,进而终止整个上传任务,仅需要记录下失败的图片,提醒用户重传即可.2.异常处理需要注意的地方1)Catch和Finally代码应该非常短,而且
-
详解C#编程中异常的创建和引发以及异常处理
创建和引发异常 异常用于指示在运行程序时发生了错误.此时将创建一个描述错误的异常对象,然后使用 throw 关键字"引发"该对象.然后运行时搜索最兼容的异常处理程序. 当存在下列一种或多种情况时,程序员应引发异常: 方法无法完成其中定义的功能. 例如,如果方法的参数具有无效值: static void CopyObject(SampleClass original) { if (original == null) { throw new System.ArgumentException
-
c#异常处理示例分享
复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq; using System.Text;//2014.3.14namespace _6.异常{ class Program { static void Main(string[] args) { try { Console.WriteLi
-
轻松学习C#的异常处理
异常是程序运行中发生的错误,异常处理是程序设计的一部分.错误的出现并不总是编写应用程序者的原因,有时候应用程序会因为终端用户的操作发生错误.无论如何,在编写程序前,都应该预测应用程序和代码中出现的错误.一般良好的编程规范也会避免一些不必要的程序错误的出现. 在项目的开发过程中,并不是所有的代码执行都和想象那样理想,总是避免不了异常的发生.这就需要编程语言的去处理这些异常,C#语言中有三种异常处理语句: try...catch;//处理异常 try.
-
基于java Servlet编码/异常处理(详解)
1. Servlet输出中文 (1)为什么会有乱码? out.println方法在输出时或者表单提交的时候,浏览器会对表单中的中文参数值进行编码; 注:会使用表单所在的页面打开时使用的编码方式进行编码服务器端默认会使用ISO-8859-1进行解码所以会产生乱码 (2)如何解决? 1)post请求:requset.setcharcterencoding(string charset);添加到所有获取参数前并且该方法只支持post方法 2)get请求:修改服务器设置 2. 读取请求参数值 (1)St
-
SpringBoot 统一异常处理详解
代码结构 配置pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/
-
Django REST 异常处理详解
异常 异常处理-允许错误处理在程序结构的中心或者高层级的地方被清晰有条理的组织起来. Exceptions- allow error handling to be organized cleanly in a central or high-level place within the program structure. - Doug Hellmann, Python Exception Handling Techniques Rest框架视图中的异常处理 Exception handling
-
C/C++中异常处理详解及其作用介绍
目录 概述 异常处理 异常处理机制 函数声明指定异常 练习 案例一 案例二 概述 作为一名专业写 Bug, 编程一天改 bug 一周的程序媛. 学会异常处理是非常重要的. 我们不仅要考虑没有错误的理想情况, 更要考虑存在错误时的情况. Debug 可以帮助我们尽快发现错误, 消除错误. 错误类别: 语法错误 运行错误 逻辑错误 异常处理 设计程序时, 事先分析程序运行时可能出现的各种意外情况, 定制出相应的处理方法. 异常处理指对运行时出现的差错以及其他例外情况的处理. 没有异常处理程序时, 运
-
java基础检查和未检查异常处理详解
程序在运行时如果出错,编译器会抛出异常,异常如果没有被捕捉处理,程序会终止运行.异常分为未检查异常和已检查异常,以下对这两类异常做进一步说明. 检查异常 已检查异常(checked exceptions),编译器强制要求捕获并处理可能发生的异常,不处理就不能通过编译,如:IOException.SQLException以及用户自定义的Exception异常.如下图所示,程序运行时会因为IO等错误导致异常,要求处理异常,需要手动处理关闭释放资源. 继续抛出,通过throws exception抛出
-
C#中类的异常处理详解
目录 前言 异常 寄语 总结 前言 日常编码过程中,最重要的技能不是说你学会使用很多最新的编程技术或者做出一个高大上的系统.而是你在写代码过程中,对异常的处理,是否系统可以稳定,健壮. 对于异常的处理在C#中是通过try/cath机制来捕获的,接下来我们一起来看看. 异常是程序中的运行时错误,它违法了系统约束或应用程序约束,或出现了在正常操作时未预料的情形. 比如对于某些变量的非正常赋值或者在参与运算操作时出现错误等. 异常 关于异常,在C#中通过try语句和处理异常机制类保证异常的捕获,防止由
-
Python学习之异常处理详解
目录 什么是异常与异常处理 异常的语法 捕获通用异常 捕获具体异常 如何捕获多个异常 捕获多个异常-方法1 捕获多个异常-方法2 本章节主要学习 python 中的异常处理,来看一下该章节的内容有哪些.首先我们需要了解 什么是异常与异常的处理 ,然后再继续 异常的语法结构 什么是异常与异常处理 异常 —> 可以理解为不同寻常. 正常情况下,我们的程序是自上而下的逐行执行,执行到最后一行才会终止程序的执行.而异常的情况会导致我们的程序半途而废停止了执行.一般情况下的停止执行都是因为我们的程序出错而
-
kotlin 协程上下文异常处理详解
目录 引言 一.协程上下文 1.CoroutineContext 2.CorountineScope 3.子协程继承父协程 二.协程的异常传递 1.协程的异常传播 2.不同上下文(没有继承关系)之间协程异常会怎么样? 3.向用户暴露异常 三.协程的异常处理 使用SupervisorJob 异常捕获器CoroutineExceptionHandler Android中全局异常的处理 引言 从前面我们可以大致了解了协程的玩法,如果一个协程中使用子协程,那么该协程会等待子协程执行结束后才真正退出,而达
-
C++之异常处理详解
程序中的错误分为编译时的错误和运行时的错误.编译时的错误主要是语法错误,比如:句尾没有加分号,括号不匹配,关键字错误等,这类错误比较容易修改,因为编译系统会指出错误在第几行,什么错误.而运行时的错误则不容易修改,因为其中的错误是不可预料的,或者可以预料但无法避免的,比如内存空间不够,或者在调用函数时,出现数组越界等错误.如果对于这些错误没有采取有效的防范措施,那么往往会得不到正确的运行结果,程序不正常终止或严重的会出现死机现象.我们把程序运行时的错误统称为异常,对异常处理称为异常处理.C++中所
-
MVC异常处理详解
在日常开发中,我们会去捕捉很多的异常,来进行处理,通常我们的方法就是,在需要进行异常处理的地方加上 try catch 块,但是,如果需要异常处理的地方很多,那么,就会频繁的去写try catch 块,对于我们天生'懒惰' 的程序员来说,总想找一个捷径.于是,就会有全局异常处理,那么,今天,我们就来看看在MVC中怎么进行全局异常处理的. 一.MVC框架自己的全局异常处理 在MVC中,框架已经给我们一共了一套全局异常处理的特性类HandleErrorAttribute类.我们可以在MVC中的App
随机推荐
- PJBLOG中用到的ajaxjs.几个简单的函数
- 浅谈sql数据库去重
- 广告切换效果(缓动切换)
- 利用javascript移动div层-javascript 拖动层
- 浅谈Android Content Provider的使用
- 纯jsp实现的倒计时动态显示效果完整代码
- C#实现百度网站收录和排名查询功能思路及实例
- scrollTop 用法说明
- javascript代码调试之console.log 用法图文详解
- C++常见错误中英文对照表
- Android 状态栏虚拟导航键透明效果的实现方法
- VBS教程:方法-GetFileName 方法
- VBS教程:函数-CByte 函数
- 数据库访问性能优化
- php操作MongoDB基础教程(连接、新增、修改、删除、查询)
- PHP CLI模式下的多进程应用分析
- Jquery $.getJSON 在IE下的缓存问题解决方法
- 原生JS实现平滑回到顶部组件
- JS判断form内所有表单是否为空的简单实例
- IIS5 ISAPI Extension Back Door