C#异常处理--C#基础
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#基础的更多相关文章
- Java中实现异常处理的基础知识
Java中实现异常处理的基础知识 异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况.许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象. 例如:数组越界和被0除. ...
- 使用Typescript重构axios(九)——异常处理:基础版
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- python异常处理(基础)
之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...
- python专题-异常处理(基础)
之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/cmt110/p/7464748.ht ...
- 异常处理——java基础
Evernote Export 异常处理 异常处理的套路模板: try//创建异常处理{ throw new();//抛出异常 //一旦有异常, 抛出异常后,后面的语句不再执行 语句;{ …… ...
- Java异常处理的基础知识
Java中的异常捕获语句 Try{ //可能发生运行错误的代码: } catch(异常类型 异常对象引用){ //用于处理异常的代码 } finally{ //用于“善后” 的代码 } Java 中所 ...
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
- JAVA动手动脑异常处理
1>请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. import javax.swing.*; class AboutEx ...
- C++学习笔记27:异常处理机制
一.异常处理机制基础 异常的定义 程序中可以检测的运行不正常的情况 异常处理的基本流程 某段程序代码在执行操作时发生特殊情况,引发一个特定的异常 另一段程序代码捕获该异常并处理它 二.异常的引发 th ...
随机推荐
- 算法&数据结构系列 -- 堆(优先队列)
前言 话说新开的博客十分好用... 所以,我打算开一个坑,名曰[算法系列]. 什么意思--从名字泥应该就猜得出来... 废话不多说,进入正文~~ 正文 原理 首先,堆是一颗棵二叉树.. 其次,堆是一棵 ...
- 《Web Scraping With Python》Chapter 2的学习笔记
You Don't Always Need a Hammer When Michelangelo was asked how he could sculpt a work of art as mast ...
- Win10无法使用小娜搜索本地应用问题的解决方案
小娜介绍 win10的Cortana小娜是一个功能非常强大的语音和搜索助手,用户可以通过小娜助手搜索任意的文件和应用软件,不过有用户发现win10的小娜搜索不到已安装的本地软件,那么win10小娜助手 ...
- 关于字符型char变量
写程序时,意外发现个很不容易察觉问题出在哪的问题的 scanf("%c",&ch); scanf("%c",&c); printf(" ...
- Websocket原理及使用场景[转载]
WebSocket的使用场景 社交聊天.弹幕.多玩家游戏.协同编辑.股票基金实时报价.体育实况更新.视频会议/聊天.基于位置的应用.在线教育.智能家居等需要高实时的场景 由轮询到WebSocket 1 ...
- UITableView!别再用代码计算行高了(一)
你还在用代码去计算行高吗?你不感觉那种方式很low吗?从今天起,试着做些改变吧! 别给我讲你喜欢写代码的感觉,你就是要用代码去计算行高,那我这篇文章不适合你. 在讲解复杂内容之前,还是先学习简单的内容 ...
- Javascript获取数组中的最大值和最小值方法汇总
方法一 sort()方法 b-a从大到小,a-b从小到大 var max2 = arr.sort(function(a,b){ return b-a; })[0]; console.log(max2) ...
- Jenkins 登录信息无效。请重试。
刚开始安装的时候没有问题,去 D:\jenkins\secrets下找到initialAdminPassword这个文件 输入里面的密码就行 隔了一段时间登陆,登陆不上去了,这时候,可以去 D:\je ...
- vim+makefile入门编辑,编译,差错实例
vim+makefile入门编辑,编译,差错实例 vim makefile 编译 编写代码,一般在vim中编辑完后,输入:wq,在命令行下输入g++ hello.cc -o hello ,出现问题,打 ...
- vue子组件向父组件传值
vue2.0中通过$emit事件在子组件中自定义事件,通过操作子组件中的事件,向父组件传递参数: 首先写一个叫做parentComp.vue的父组件: <template> <div ...
