C#异常处理
C#异常处理
using System;
//异常:程序在运行的过程中产生的种种的不正常的现象
//异常处理:如果一个异常产生,但是没有被处理,这个异常会导致程序奔溃
/*
* 语法:
* try
* {
* //可能会出现异常的代码
* }
* catch(异常类型e)
* {
* //这里捕获try中可能出现的异常
* }
* finally
* {
* //无论程序有没有异常,finally中的代码始终会执行
* }
*/
/*
* 1、一个try可以匹配多个catch来捕获多种异常
* 2、如果有多个catch
* 2.1、如果多个catch捕获的异常彼此之间没有继承关系,那么关系无所谓
* 2.2、如果多个catch捕获的异常彼此之间有继承关系,那么必须把父类异常放在最后
*
*/
public class Program
{
public static void Main(string[] args)
{
//在C#中,所有的异常都是Exception的子类
#region
try
{
int[] arr = new int[3];
arr[4] = 01;
}
//来捕获DivideByZeroException
catch (DivideByZeroException e)
{
Console.WriteLine("发生了除0异常!");
}
//来捕获IndexOutOfRangeException这个异常
catch (IndexOutOfRangeException e)
{
Console.WriteLine("发生了数组越界的异常!");
}
catch(Exception e)
{
Console.WriteLine("程序捕获到了异常!");
}
Console.WriteLine("程序结束了!");
#endregion
//产生自定义的异常,并将它捕获
try
{
Person.ScoreExceptionDemo();
}
catch(ScoreException exception)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(exception.Message);
}
}
}
//自定义异常:继承自Exception类,写一个自己的类即可
class ScoreException : Exception
{
//如果希望自定义的异常有描述信息,只需要写一个有参构造即可
public ScoreException(string message) : base(message){ }
}
class Person
{
//设计一个会产生异常的方法
public static void ScoreExceptionDemo()
{
//实例化一个异常对象
ScoreException exception = new ScoreException("哈哈哈,这个是我自定义的异常");
//抛出异常
throw exception;
}
}