try...catch:捕获异常
try...finally:清除异常
try..catch...finily:处理所有异常

1、捕获异常

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 异常处理
{
//try...catch捕获异常
//try...finally清除异常
//try..catch...finily处理所有异常
//try
//{
//}
//catch(){} class Program
{//捕获异常
static void Main(string[] args)
{
//利用try catch语句来捕获数组越界问题
int[] myint = {,,,,,, };
try
{
for (int i = ; i <= myint.Length; i++)
{
Console.Write(myint[i].ToString() + " ");
}
}
//catch
//{
// Console.WriteLine("异常已经发生");
//}
//这条语句虽然可以捕获,但不能描述原因
catch (Exception e) {
Console.WriteLine(e.Message.ToString());
}
Console.ReadKey();
}
}
}//e.Message.ToString()中的Message是获取描述当前异常信息

2、清除处理所有异常

如果用户对产生的错误不进行处理,只是捕获,但不能消除产生的错误分配的资源,需要用到finally

        try
{
//包含容易产生异常的代码
}
finally
{
//用于消除try块中分配的任何资源以及运行任何即使在发生异常时也必须执行的代码
}

但是没有对异常进行提示,所以选择处理所有异常

        // try
//{//包含容易产生异常的代码
//}
// catch (异常类,异常实例对象)
// {
//异常处理代码
//}
// finally {
//用于消除try块中分配的任何资源以及运行任何即使在发生异常时也必须执行的代码,无论发生异常与否
//}

示例:除数不能为0的异常捕获与处理

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 清除捕获异常
{
class Program
{
static void Main(string[] args)
{
int[] myint = { , , , , , };
try
{
for (int i = ; i < myint.Length; i++)
{
Console.WriteLine("720除{0}={1}",myint[i],/myint[i]);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message.ToString());
}
finally
{
Console.WriteLine("什么时候都会执行,无论发生与否!");
}
Console.ReadKey();
}
}
}

所有代码中都加上异常处理,完全可以,但处理异常会大大降低性能。如可能检测到发生异常,那么可以添加上,如果没有可能就无需添加。

3、引发异常

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 引发异常
{
class Program
{
/// throw引发异常
///
/// throw new 异常类(异常信息);
/// 异常类:预定义、自定义
/// 异常信息:字符串“格式转换错误”
/// </summary>
/// 实例:
/// 为Pro
private static int ConvertStringToInt(string mystr)
{
int outnum = ;
try
{
outnum = Convert.ToInt32(mystr);
return outnum;
}
catch
{
throw new FormatException("格式转换是不正确");
}
}
static void Main(string[] args)
{
string mystr = "haha666";
try
{
int myint;
myint = ConvertStringToInt(mystr);
Console.WriteLine(myint);
}
catch (Exception e)
{
Console.WriteLine(e.Message.ToString());
}
Console.ReadKey();
}
}
}

4、预定义异常

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 预定义异常
{
class Program
{
static void Main(string[] args)
{
int[] a = { ,,,,,};
try
{
for (int i = ; i <= a.Length; i++)
Console.WriteLine(a[i]);
}
catch(IndexOutOfRangeException e)//自定义了数组越界的异常
{
Console.WriteLine(e.Message.ToString());
} Console.ReadKey();
}
}
}

5、自定义异常类

System.Exception为系统预定义的异常
throw(自定义异常类名);

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 自定义异常类
{
//System.Exception为系统预定义的异常
//throw(自定义异常类名);
class MyException:Exception
{ }
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("这行代码在引发异常之前会被执行");
throw new MyException();
Console.WriteLine("由于引发了异常,这行代码不会被执行");//系统知道这句不会执行,所以编译前会加上波浪线提示
}
catch (MyException)
{
Console.WriteLine("这里是自定义异常"); }
Console.ReadKey();
} }
}

C#异常处理--C#基础的更多相关文章

  1. Java中实现异常处理的基础知识

    Java中实现异常处理的基础知识 异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况.许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象. 例如:数组越界和被0除. ...

  2. 使用Typescript重构axios(九)——异常处理:基础版

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  3. python异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...

  4. python专题-异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/cmt110/p/7464748.ht ...

  5. 异常处理——java基础

    Evernote Export 异常处理   异常处理的套路模板: try//创建异常处理{   throw new();//抛出异常 //一旦有异常, 抛出异常后,后面的语句不再执行 语句;{ …… ...

  6. Java异常处理的基础知识

    Java中的异常捕获语句 Try{ //可能发生运行错误的代码: } catch(异常类型 异常对象引用){ //用于处理异常的代码 } finally{ //用于“善后” 的代码 } Java 中所 ...

  7. JAVA语法基础作业——动手动脑以及课后实验性问题 (八)

    一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...

  8. JAVA动手动脑异常处理

    1>请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. import javax.swing.*; class AboutEx ...

  9. C++学习笔记27:异常处理机制

    一.异常处理机制基础 异常的定义 程序中可以检测的运行不正常的情况 异常处理的基本流程 某段程序代码在执行操作时发生特殊情况,引发一个特定的异常 另一段程序代码捕获该异常并处理它 二.异常的引发 th ...

随机推荐

  1. redis 设置认证密码

    通过修改redis配置文件(redis.conf)修改验证密码.(重启生效) requirepass myRedis 客户端通过密码登录redis并进行操作 redis-cli -h 127.0.0. ...

  2. linux 下创建GRE隧道

    其他国家的互联网如同一个孤岛.要想访问国外网站异常的缓慢,甚至被和谐了.可以建立一条隧道来避免这种情况,下面说说GRE隧道如何建立. 1. GRE介绍 GRE隧道是一种IP-over-IP的隧道,是通 ...

  3. 同步博客—CSDN推广

    niiickのCSDN 用CSDN也有几个月了 其实一开始有人让我转到博客园我是拒绝的 (毕竟强迫症接受不了一边博客只有一半= =) 不过最近有幸观赏了某位dalao的博客园 发现没有广告好棒!!!设 ...

  4. [bzoj4551][Tjoi2016&Heoi2016]树-树链剖分

    Brief Description 给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个 结点,可以打多次标记.) ...

  5. 统计输入的汉字,数字,英文,other数量

    主要用正则表达式在完成对汉字,数字,英文数量的验证. import java.util.Scanner; /* * 统计汉字,数字,英文,other * */ public class Test { ...

  6. 撸一撸Spring Cloud Ribbon的原理-负载均衡器

    在上一篇<撸一撸Spring Cloud Ribbon的原理>中整理发现,RestTemplate内部调用负载均衡拦截器,拦截器内最终是调用了负载均衡器来选择服务实例. 接下来撸一撸负载均 ...

  7. esxi 改变虚拟机磁盘格式为精简存储

    最近在部署虚拟机,导入几个之前保存的ovf模板,发现存储已经被耗费的差不多了.检查了下磁盘存储格式 存储类型是 后置备延迟置零 占用空间 简单了解下 三种存储类型 1.厚置备延迟置零: 默认的创建格式 ...

  8. centos7 yum与Python3冲突

    虽然标题不严谨,但是,我自己尝试了多次,在安装了Python3.6后,yum无法同步Python.所以采用网上抄来抄去的做法,将yum指定使用Python2,凡是需要安装与Python相关的模块,使用 ...

  9. Qt 网络模块如何使用?

    1.网络模块介绍 类名 说明 中文 QAbstractNetworkCache The interface for cache implementations 缓存实现的接口 QNetworkCach ...

  10. 在页面加载后在设置embed 的src 怎么实现?

    我想在页面加载完之后,再给embed 加入src 值,但embed 后播放不了.下面是我的两个方案,都无法播放,求解: <script type="text/javascript&qu ...