一.
using System;
namespace _010_异常处理
{
class Program
{
static void Main(string[] args)
{
try
{
}
//catch (Exception e1)//这里的exception只能替换成异常的子类,如果写Exception代表对应所有的异常都会进行捕捉
////那么如果下面的catch写任何异常都会报错,因为Exception的范围已经包含所有子类了
//{
// // throw;
//}
//如果要写Exception可以写在所有子类异常的最后,前面写自己对于某些特定子类异常的自定义异常处理,后面有其他异常就用Exception捕捉
catch(EntryPointNotFoundException e1)
{
}
catch (AccessViolationException e2)
{
// throw;
}
finally//finally是最后必须要执行的
{
}
}
}
}
二.
using System;
namespace _011_异常处理
{
public class DivZero
{
int result;
public DivZero()//注意这里是构造函数,如果不写访问权限就默认·是私有的
{
result = 0;
}
public void DivideNumber(int num1,int num2)
{
try
{
result = num1 / num2;
}
catch (DivideByZeroException e)
{
Console.WriteLine("DivideByZeroException ="+e);
}
finally//必执行
{
Console.WriteLine("result ="+result);
}
}
}
class Program
{
static void Main(string[] args)
{
DivZero divZero = new DivZero();
divZero.DivideNumber(1,0);
}
}
三.
using System;
namespace _012_自定义异常
{
public class selfException:ApplicationException
{
public selfException(string message):base(message)
{ }
}
public class SelfExceptionClass
{
//补充权限知识
//1.声明命名空间、类,前面不加限制访问修饰符时,默认访问权限为internal——访问仅限于当前程序集。
//2.声明类成员(包括字段(变量)、属性和方法)默认为private)以及结构类型,前面不加限制访问修饰符时,默认访问权限为private——访问仅限于当前类。
//3.声明枚举类型以及接口类型,前面不加限制访问修饰符时,默认为public且只能为public(就算要把限制访问修饰符写出来,也只能写public,而不能使用其他限制访问修饰符)——访问不受限制。
public int temp = 0;
public void ShowTemp()
{
if (temp == 0)
{
throw (new selfException("自定义异常测试。"));
}
else
{
Console.WriteLine("temp=" + temp);
}
}
}
class Program
{
static void Main(string[] args)
{
SelfExceptionClass selfException = new SelfExceptionClass();
try
{
//selfException.temp = 1;//这里要想访问,必须让权限变为公有,加上这句,则没有异常,注释这句则有异常
selfException.ShowTemp();
// throw (new selfException("自定义异常测试。"));
}
catch (selfException e)
{
Console.WriteLine("selfException ="+e.Message);
throw;
}
finally
{
Console.WriteLine("自定义的异常测试结束");
}
}
}
}
浙公网安备 33010602011771号