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. 使用xUnit为.net core程序进行单元测试(4)

    第1部分: http://www.cnblogs.com/cgzl/p/8283610.html 第2部分: http://www.cnblogs.com/cgzl/p/8287588.html 第3 ...

  2. 前端系列之JavaScript基础知识概述

    ​微信公众号:compassblog 欢迎关注,欢迎转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.什么是JavaScript (1).JavaScript是web上一种功能强大的编程语 ...

  3. mysql 修改默认字符集为utf8

    MySQL 5.5, all you need is: [mysqld] character_set_client=utf8 character_set_server=utf8 collation_s ...

  4. EntityFramework Core 2.0执行原始查询如何防止SQL注入?

    前言 接下来一段时间我们来讲讲EntityFramework Core基础,精简的内容,深入浅出,希望为想学习EntityFramework Core的童鞋提供一点帮助. EntityFramewor ...

  5. 流式计算与计算抽象化------《Designing Data-Intensive Applications》读书笔记15

    上篇的内容,我们探讨了分布式计算中的MapReduce与批处理.所以本篇我们将继续探索分布式计算优化的相关细节,并且分析MapReduce与批处理的局限性,看看流式计算是否能给我们在分布式计算层面提供 ...

  6. eclipse中创建一个maven项目

    1.什么是Maven Apache Maven 是一个项目管理和整合工具.基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建.报告和文档. Maven工程结构和 ...

  7. uva10003 区间DP

    很清晰的区间dp问题.d(i,j)表示断点i到断点j的最小费用,由于开头和结尾也是断点,所以应该加入断点数组,即 cut[0]=0; cut[n+1]=len; 边界就是d(i,i+1)=0; 转移方 ...

  8. 编写React组件的最佳实践

    此文翻译自这里. 当我刚开始写React的时候,我看过很多写组件的方法.一百篇教程就有一百种写法.虽然React本身已经成熟了,但是如何使用它似乎还没有一个"正确"的方法.所以我( ...

  9. Centos7下,简单DOCKER 使用.映射SSH端口到宿主主机.

    其实使用docker完全没有必要ssh,初学的时候,可以这样熟悉以下操作. 参考这哥们的文章:http://www.jianshu.com/p/d2dd936863ec 获取镜像 docker pul ...

  10. git 命令和使用场景总结

    资料地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000    http://w ...