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 ...
随机推荐
- 几个重要的shell命令:diff patch tar find grep
diff diir_1.0/ dir_2.0/ -urNB > dir_2.0.patch u:union以合并的格式来输出文件的差异信息 r:递归的对比所有的子目录下的文件 U:将不存在的文件 ...
- pygame写贪吃蛇
python小白尝试写游戏.. 学了点pygame不知道那什么练手好,先拿贪吃蛇开刀吧. 一个游戏可以粗略的分为两个部分: 数据(变量) 处理数据(函数,方法) 设计变量 首先预想下,画面的那些部分需 ...
- 克隆虚拟机以及两台linux机器相互登录:linux学习第四篇
克隆虚拟机 1. 克隆 之后自己命名克隆的虚拟机并自己选择存放位置,完成克隆 2. 克隆虚拟机之后对新的虚拟机修改网络配置,以免冲突(将配置文件里的UUID去掉,并修改IP地址) ...
- 开源项目-网上公开http代理爬取、简单分类
爬取网上公开免费代理(http/socks),解析入库,可满足需要切换IP的场景(爬虫.投票等)需求. 项目地址: https://github.com/Jwnie/proxyservice 1.采用 ...
- 获取对象属性类型、属性名称、属性值的研究:反射和JEXL解析引擎
同步发布:http://www.yuanrengu.com/index.php/20170511.html 先简单介绍下反射的概念:java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所 ...
- Yii小部件
小部件 Yii提供了一套数据小部件widgets,这些小部件可以用于显示数据. DetailView小部件用于显示一条记录数据. ListView和GridView小部件能够用于显示一个拥有分页.排序 ...
- Java数字签名——ECDSA算法
ECDSA 例如微软产品的序列号的验证算法. Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名算法. 速度快,强度高,签名短 —————————— ...
- UVA129
坑点在于输出格式. 四个字母一个空格,行末没有空格,64个字母换行重新打印. AC代码 #include<cstdio> const int maxn=200; int cnt; int ...
- UVA - 1218 Perfect Service (树形DP)
思路:dp[i][0]表示i是服务器:dp[i][1]表示i不是服务器,但它的父节点是服务器:dp[i][2]表示i和他的父亲都不是服务器. 转移方程: d[u][0] += min(d[ ...
- POJ - 3984 bfs [kuangbin带你飞]专题一
bfs搜索过程中将路径保存下即可. AC代码 #include<cstdio> #include<cstring> #include<algorithm> #inc ...