如何用C#创建用户自定义异常浅析

作者:conan5566 时间:2023-06-10 20:06:16 

概述

异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的:try、catch、finally和throw。

try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。

自定义异常

您也可以定义自己的异常。用户自定义的异常类是派生自 ApplicationException 类。


using System;
namespace UserDefinedException
{
  class TestTemperature
  {
     static void Main(string[] args)
     {
        Temperature temp = new Temperature();
        try
        {
           temp.showTemp();
        }
        catch(TempIsZeroException e)
        {
           Console.WriteLine("TempIsZeroException: {0}", e.Message);
        }
        Console.ReadKey();
     }
  }
}
public class TempIsZeroException: ApplicationException
{
  public TempIsZeroException(string message): base(message)
  {
  }
}
public class Temperature
{
  int temperature = 0;
  public void showTemp()
  {
     if(temperature == 0)
     {
        throw (new TempIsZeroException("Zero Temperature found"));
     }
     else
     {
        Console.WriteLine("Temperature: {0}", temperature);
     }
  }
}

当上面的代码被编译和执行时,它会产生下列结果:


TempIsZeroException: Zero Temperature found

抛出对象

如果异常是直接或间接派生自 System.Exception 类,您可以抛出一个对象。您可以在 catch 块中使用 throw 语句来抛出当前的对象,如下所示:


Catch(Exception e)
{
  ...
  Throw e
}

总结

来源:https://mp.weixin.qq.com/s/d-QWtPEHBg79ATV4roF8Kg

标签:c#,异常,自定义
0
投稿

猜你喜欢

  • 详解mysql插入数据后返回自增ID的七种方法

    2023-07-01 21:32:20
  • Android自定义View仿大众点评星星评分控件

    2023-07-22 22:37:28
  • Java面向接口编程之命令模式实例详解

    2021-10-19 14:26:53
  • Java实现十进制与二进制互转的示例详解

    2022-04-02 07:40:56
  • Java C++ 算法题解leetcode1608特殊数组特征值

    2023-05-21 21:09:01
  • java字符串相似度算法

    2023-11-26 12:33:25
  • MyBatis-Plus逻辑删除和字段自动填充的实现

    2023-01-08 03:45:54
  • C# Winform使用扩展方法实现自定义富文本框(RichTextBox)字体颜色

    2021-06-23 15:05:50
  • android studio 3.0 升级 项目遇到的问题及更改思路(问题小结)

    2021-06-14 17:19:16
  • android端微信支付V3版本地签名统一下单详解

    2023-05-18 02:37:44
  • java如何生成登录随机验证码

    2023-08-21 11:42:57
  • MyBatis自定义映射关系和关联查询实现方法详解

    2021-12-18 21:25:28
  • springboot全局异常处理代码实例

    2023-02-05 20:41:36
  • HttpClient 在Java项目中的使用详解

    2021-12-06 02:36:57
  • Java开发必备的三大修饰符

    2021-10-19 10:11:01
  • C#实现顺序栈和链栈的代码实例

    2021-08-17 02:36:40
  • C++实现特殊矩阵的压缩存储算法

    2023-11-17 23:53:06
  • 使用okhttp替换Feign默认Client的操作

    2021-10-03 16:57:59
  • 详解Java Map中三个冷门容器的使用

    2021-09-02 14:27:22
  • Mybatis配置错误:java.lang.ExceptionInInitializerError

    2021-12-31 16:58:59
  • asp之家 软件编程 m.aspxhome.com