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. vuex学习笔记

    一.vuex的目的 把组件的共享状态抽取出来,以一个全局单例模式管理.在这种模式下,组件树构成了一个巨大的视图,不管在树的哪个位置,任何组件都能获取状态或触发行为. 二.vuex集中式管理数据 安装 ...

  2. win10安装elementary os双系统

    elementary os是ubuntu的一个分支,界面有点像苹果,比较漂亮.如图: 从已有的磁盘中划出一块空白分区,将elementary单独安装在这个分区里,这个分区需要比其他分区的剩余空间都要大 ...

  3. nodejs express搭建一个网站整理

    先前用安卓完成了一个优惠券搜索的app,发现在app上操作比较麻烦,于是决定弄个网页版的.做网站是自己的擅长的,毕竟毕业之后咱一直用asp.net mvc做网站也好几个年头了. 可是这次我又想换个方式 ...

  4. Mac下安装php5.6/7.1

    安装环境 OS X EI Capitan 10.11.4 Homebrew安装 homebrew是一个类似于ubuntu中apt-get的一个软件管理器,安装比较简单,在命令行中输入如下代码: rub ...

  5. python学习:hashlib模块使用

    #!/usr/bin/env python   import sys import hashlib   def md5sum(f):     m = hashlib.md5()     with op ...

  6. mybatis自动生成mapper,dao映射文件

    利用Mybatis-Generator来帮我们自动生成mapper.xml文件,dao文件,model文件. 1.所需文件 关于Mybatis-Generator的下载可以到这个地址:https:// ...

  7. 浅谈format格式化输出

    什么是format? 相对于基本格式化输出采用"%"的方法,format的功能强大,该函数把字符串当一个模板,通过传入的参数进行格式化,并且使用大括号"{}"作 ...

  8. XP环境下的网络证书问题

    项目过程中,由于是收银系统需要从服务器获取支付二维码,会产生SSL连接的问题,在win7.win10上都没有问题,放到WIN XP上出现了The underlying connection was c ...

  9. C语言_简单的阶乘函数

    include <stdio.h> long jc (int num); long jc2 (int num); int main() { long n; n = jc(); printf ...

  10. Shell脚本的颜色样式及属性控制

    首先看一下格式 echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 举例 echo -e "\033[41;36m 字体 \033[0m" ...