首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该从.NET中的Exception或ApplicationException派生自定义异常吗?

在.NET中,您可以从Exception或ApplicationException派生自定义异常。这取决于您的需求和异常类型。

  1. Exception类:这是.NET中所有异常的基类。如果您的自定义异常类型需要继承自.NET中的异常类型,那么您应该从Exception类派生。例如,如果您需要创建一个自定义的数据访问层异常,可以从Exception类派生。
  2. ApplicationException类:这是一个从Exception类派生的异常类,用于表示应用程序中的特定错误。如果您的自定义异常类型是特定于应用程序的,那么您应该从ApplicationException类派生。例如,如果您需要创建一个自定义的业务逻辑异常,可以从ApplicationException类派生。

在选择从哪个类派生自定义异常时,请考虑以下几点:

  • 如果您的异常类型与特定的.NET框架或库相关,请从相应的异常类派生。
  • 如果您的异常类型与应用程序的特定逻辑相关,请从ApplicationException类派生。
  • 如果您的异常类型需要继承自.NET中的异常类型,请从Exception类派生。

总之,从Exception或ApplicationException派生自定义异常取决于您的需求和异常类型。在选择派生类时,请确保考虑到异常类型的特定性和与应用程序的关联程度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET----错误和异常处理机制

对于.Net类,一般异常类System.Exception派生自System.Object,通常不在代码抛出System.Exception泛型对象,因为他们无法确定错误情况本质。   ...在该层次中有两个重要类,他们派生自System.Exception类: SystemException------该类用于通常由.NET允许库抛出异常,或者由几乎所有的应用程序抛出异常。...ApplicationException----在.NET Framework最初设计,是打算把这个类作为自定义应用程序异常基类。不过,CLR抛出一些异常类也派生自这个类。...因此ApplicationException派生自定义异常类型没有任何好处,取而代之是,可以直接Exception基类派生自定义异常类。   ...异常处理具有性能含义,在常见情况下,不应该使用异常处理错误。应尽量编写好避免错误出现代码。   在异常捕获,我们可以实现多个catch块来针对不同错误做出对应错误处理。

60850

框架设计原则和规范(三)

>类型,而不要使用自定义委托 .NET框架泛型委托定义: public delegate void Action() public delegate void Action(T1...不要在异常过滤程序(exception filter)抛出异常 C#不支持异常过滤程序 2.1.11. 避免显示finally代码块抛出异常。...ApplicationException 这本不应该属于.NET框架,最初想法是用派生SystemException类来表示CLR(系统)自己抛出异常,而用派生ApplicationException...但是,很多异常类都没有遵循这一模式。 2.3.2.1. 不要抛出System.ApplicationException派生新类 2.3.3....不要显式抛出这些异常应该只有CLR才能抛出它 2.4. 自定义异常设计 2.4.1. 要从System.Exception其他常用异常基类派生异常 2.4.2.

95260

【Unity】编程规范

在适当地方,使用复合单词命名派生类。派生类名称第二个部分应当是基类名称。...例如,ApplicationException 对于名为 Exception 派生类是适当名称,原因是 ApplicationException 是一种 Exception。...请在应用该规则时进行合理判断。例如,Button 对于 Control 派生类是适当名称。尽管按钮是一种控件,但是将 Control 作为类名称一部分将使名称不必要地加长。...推荐名称应该为动词动词短语.例如Save,SaveCustomer,而不要使用CustomerSave 不要在方法重复类名称。...: Attribute { } 【自定义异常Exception结尾】 public class AppException : Exception { } 【在类顶部声明所有的成员变量,静态变量声明在最前面

46920

【深入浅出C#】章节 6: 异常处理和调试:异常概念和处理机制

一、C# 异常处理机制 1.1 异常继承结构 在C#异常处理是通过异常继承结构来实现。所有的异常类都是System.Exception派生而来,它是异常类继承结构根基。...System.Exception类定义了一些基本属性和方法,供派生异常类使用。...派生自System.ApplicationException用户自定义异常类: 用户可以根据自己需求,派生自System.ApplicationException类来定义自己异常类型,以便更好地区分不同类型异常情况...一般来说,系统抛出异常都是由派生自System.SystemException类异常,而用户定义异常通常是由派生自System.ApplicationException异常。...自定义异常类,它继承自 C# Exception 类。

70140

Java包含两种异常checked异常和unchecked异常

有许多支持或者反对二者甚至是否应该使用checked异常争论。本文将讨论一些常见观点。开始之前,先澄清一个问题:   Checked和unchecked异常功能角度来讲是等价。...例如,如果配置文件丢失而且应用程序依赖于它,那么这时关闭应用程序是合法。   建议使用策略是:选择checked异常unchecked异常一种使用。混合使用经常导致混乱和不一致。...应用程序抛出所有异常必须是基础异常子类。所有抛出异常方法只需声明抛出基础异常。比如一个抛出Exception方法可能抛出Exception任何子类。...需要再强调一遍是,让所有可能抛出异常方法声明抛出相同基础异常意义何在?这样能比抛出unchecked异常更好地处理异常?   ...Unchecked异常不会因为异常声明聚集使方法声明显得杂乱。关于容易忘记处理unchecked异常观点在实践没有发生。关于无法获知如何处理未声明异常观点在实践没有发生。

81620

☀️ 学会编程入门必备 C# 最基础知识介绍(六)——接口、命名空间、预处理指令、正则表达式、异常处理、文件输入与输出

语法 C# 异常异常处理 创建用户自定义异常 抛出对象 C# 文件输入与输出⛄️ C# I/O 类 FileStream 类 C# 高级文件操作 总结???? 前言????...---- C# 异常类 C# 异常是使用类来表示。C# 异常类主要是直接间接地派生于 System.Exception 类。...System.ApplicationException 和 System.SystemException 类是派生于 System.Exception异常类。...System.ApplicationException 类支持由应用程序生成异常。所以程序员定义异常都应派生自该类。...at … Result: 0 ---- 创建用户自定义异常 也可以定义自己异常。用户自定义异常类是派生ApplicationException 类。

1.3K30

一个让人遗忘角落—Exception(二)

在上一篇"一个被人遗忘角落--Exception(一)",跟大家简单介绍了一下Exception,也使大家充分了解了Exception管理在一个项目中重要性,那如何在我们项目中处理异常呢?...因为处理异常性能消耗,只是在异常发生时才产生,所以性能方面的问题,我们可以忽略了。(或许这话比较拗口,但相比系统性能,更趋向于系统稳定) 如何创建一个自定义Exception?...不过自动创建Exception都是继承System.Exception,按照微软当初设想,自定义异常应该继承System.ApplicationException (可笑是,微软自己都没有遵守这个约定...Exception了,至于其它自定义Exception应该根据你项目来进行相关定义。...还介绍了自定义异常创建,日志方式对比,在下一篇,将介绍通知、异常处理流程和定义自己一个MyBaseException。

47490

《解构领域驱动设计》第一次勘误

本以为经过四年精心打磨,又经过多次审校,本书错误数能够降到空前最低,没想到书一经出版,就陆续收到书友发现书中谬误。许多谬误实在低级,让脸红。...让感到惭愧是,在公众号总结这些勘误时,发现仍有极少量错误未能在这次重印时指出,只有留待再下一次重印了。 世间事,哪能尽善尽美?...ex) { // 日志记录为横切关注点 logger.error(ex.getMessage()); // ApplicationException派生自...RuntimeException,事务会在抛出该异常时回滚 throw new ApplicationException("failed to place order", ex);...ex) { // 日志记录为横切关注点 logger.error(ex.getMessage()); // ApplicationException派生

15510

CA1058:类型不应扩展某些基类型

规则说明 异常派生自 System.Exception 其在 System 命名空间中子类之一。 如果要创建基础对象模型数据源 XML 视图,请勿创建 XmlDocument 子类。...非泛型集合 尽可能使用和/扩展泛型集合。 除非之前已发布过代码,否则请勿在代码扩展非泛型集合。...,请其他基类型泛型集合派生该类型。...何时禁止显示警告 对于有关 ApplicationException 冲突,请勿禁止显示此规则警告。 对于有关 XmlDocument 冲突,可以安全地禁止显示此规则警告。...包含特定 API 图面 你可以仅为此规则、为所有规则或为此类别所有规则配置此选项(设计)。 有关详细信息,请参阅代码质量规则配置选项。

32120

设计异常解决方案几点注意事项

× 不要把异常用作公有成员返回值输出参数。 这样会丧失用异常来报告操作失败诸多好处。 × 避免显式地finally代码块抛出异常。...此时一定要能够确信,程序能够异常完全恢复。 × 不要捕获不应该捕获异常。通常应允许异常沿调用栈向上传递。 这一点极为重要。如果捕获了不该捕获异常,会让bug更难以发现。...× 不要在框架(供其它开发人员使用)代码捕获ExceptionSystemException类型异常,除非打算重新抛出。...× 避免捕获ExceptionSystemException类型异常,除非是在顶层异常处理器程序。...× 不要抛出ApplicationException类型异常或者派生新类(参看4.2描述)。 √ 要抛出InvalidOperationException类型异常,如果对象处于不正确状态。

70590

《解构领域驱动设计》勘误

本书出版以来,已经先后印刷7次。感谢广大读者书友,友善地帮我找到了一些bug,并前后做了两次勘误。 在即将发行印刷批次以及即将发布电子书中,又做了第三次勘误。...派生自RuntimeException,事务会在抛出该异常时回滚 throw new ApplicationException("failed to place order", ex)...派生自RuntimeException,事务会在抛出该异常时回滚 throw new ApplicationException("failed to place order", ex)...派生自RuntimeException,事务会在抛出该异常时回滚 throw new ApplicationException("failed to place order", ex)...5段:“对象角度看,生命周期代表了一个实例创建到回收过程,就像出生到死亡生命过程。

62430

解析Exception和C#处理Exception常用方法总结

在.NET异常是指成员没有完成它名称宣称可以完成行动。在异常机制异常和某件事情发生频率无关。    ...异常类类型包括:基类:System.Exception;系统级异常:System.SystemException;应用程序级异常:System.ApplicationException。    ...(一).在.NET中有如下异常类:      (1).由System.SystemException派生异常类型: System.AccessViolationException 在试图读写受保护内存时引发异常...(3).由System.ArithmeticException派生异常类型: System.DivideByZeroException 试图用零除整数值十进制数值时引发异常。...(4).由System.IOException派生异常类型: System.IO.DirectoryNotFoundException 当找不到文件目录一部分时所引发异常

2K100

Net Core集成Exceptionless分布式日志功能以及全局异常过滤

Net Core集成Exceptionless分布式日志功能以及全局异常过滤 相信很多朋友都看过上篇关于Exceptionless简单入门教程[asp.Net Core免费开源分布式异常日志收集框架...当然中间很多代码都进行了重构,还有参考周旭龙代码,进行了简单地封装,同时加入了为webapi加入异常全局过滤器进行异常日志记录。希望对大家有所帮助。...Log4Net 有时候,程序需要对日志信息做非常详细记录,比如在开发阶段。...再测试下使用try catch捕获异常处理,这时候异常信息会被提交到Exception这个里面。...最后通过一个asp.net core web api项目进行了演示,在全局过滤器利用封装Log方法进行全局异常捕获。希望对大家使用Exceptionless有所帮助。

75520

设计规则

设计规则支持遵从 .NET Framework 设计准则。 本节内容 规则 描述 CA1000:不要在泛型类型声明静态成员 调用泛型类型静态成员时,必须指定该类型类型参数。...CA1018:用 AttributeUsageAttribute 标记特性 当定义自定义特性时,用 AttributeUsageAttribute 标记该特性,以指示源代码可以应用自定义特性位置。...CA1061:不要隐藏基类方法 如果派生方法参数签名只是在类型方面有所不同,而且与基方法参数签名对应类型相比,这些类型派生方式更弱,则基类型方法由派生类型同名方法隐藏。...CA1064:异常应该是公共 内部异常仅在其自己内部范围内可见。 当异常超出内部范围后,只能使用基异常来捕获该异常。...如果内部异常继承自 System.Exception、System.SystemException System.ApplicationException,则外部代码将没有足够信息来了解如何处理该异常

2K20

一文看懂 .NET 异常处理机制、原则以及最佳实践

快速了解 .NET 异常机制 Exception 类 我们大多数小伙伴可能更多使用 Exception 类型、Message 属性、StackTrace 以及内部异常来定位问题,但其实 Exception...,那么你可以在自定义异常记录更多信息。...然而大多数情况下我们都考虑使用 .NET 自带异常类,因此可以充分利用 Exception已有属性在特殊情况下报告更详细利于调试异常信息。...请勿有意自己源代码引发 System.Exception、System.SystemException、System.NullReferenceException System.IndexOutOfRangeException...前面我们说过异常仅在真的是异常情况才应该引发,因此如果这个事件引发了异常,通常也真的意味着发生了错误(差别只是我们能否错误恢复而已)。

49141

Java 最全异常讲解

数组下标越界等 设计良好程序应该异常发生时提供处理这些错误方法,使得程序不会因为异常发生而终断产生不可预见结果。...JRE 在方法调用栈查找,生成异常方法开始回溯,直到找到相应异常处理代码为止。...Exception 所有异常父类,其子类对应了各种各样可能出现异常事件。 Error 和 Exception 区别: 开着车走在路上,一头猪冲在路中间,刹车。这叫一个异常。...开着车在路上,发动机坏了,停车,这叫错误。系统处于不可恢复崩溃状态。发动机什么时候坏?我们普通司机能管?不能。发动机什么时候坏是汽车厂发动机制造商事。...怎么做: Exception 类或者它子类派生一个子类即可 习惯上,定义应该包含 2 个构造器:一个是默认构造器,另一个是带有详细信息构造器。

53610

苏州同程旅游学长给我全面的面试知识库

将对象转换为字节流过程称为序列化。为了使对象可序列化,它应该实现ISerialize接口。反序列化是字节流创建对象反向过程。 12、我们可以在静态方法中使用“ this”命令?...密封修饰符,用于防止派生。如果我们强制将密封类指定为基类,则会发生编译时错误。 18、什么是方法重载? 方法重载是在同一个类创建多个具有相同名称且具有唯一签名方法。...受保护内部变量/方法可在同一程序集中以及该父类派生访问。 22、System.String和System.Text.StringBuilder类之间有什么区别?...例如: try { GetAllData(); } catch (Exception ex) { } 在上面的示例,我们可以catch语句中省略参数。 26、接口和抽象类有什么区别?...32、什么是自定义例外? 有时,根据用户要求需要处理一些错误。自定义异常用于它们,并用于定义异常。 33、什么是代表?

3K20

一篇文章教你分辨领域服务与应用服务

分层角度讲,Gateway与HTTP Client两个模块都应该属于基础设施层,但代表外部服务业务接口,应该定义在领域层。...异常处理 与领域逻辑有关错误与异常应该自定义异常形式表达业务含义,并被定义在领域层。...此外,如果该异常表达了业务含义,那么在领域层,可以将异常定义为Checked Exception,以保证业务健壮性。...但是,在领域服务,不应该将与业务无关Checked Exception定义在领域服务方法,否则就会导致业务逻辑(领域)与技术实现(基础设施)混合。...在应用层,应尽可能保证应用服务通用性,因而需要在应用服务中将与业务有关自定义异常转换成标准格式异常,例如统一定义为ApplicationException,然后在messagecause包含具体业务含义

4K80

Java基础教程(10)-Java异常处理机制

该方法可以选择自己处理异常传递该异常异常也是一种 class ,因此它本身带有类型信息;异常类型所有异常类型都是内置类Throwable子类。...Exception 又分为:受检异常(checked exception)>当我们希望我们⽅法调⽤者, 明确处理⼀些特殊情况时候, 就应该使⽤受检异常非受检异常( unchecked exception...编写⾃定义异常类实际上是继承⼀个 API 标准异常类,⽤新定义异常处理信息覆盖原有信息过程。一个常见做法是自定义一个 BaseException 作为“根异常”,然后,派生出各种业务类型异常。...BaseException 需要从一个适合 Exception 派生,通常建议 RuntimeException 派生: public class BaseException extends RuntimeException...{ }其他业务类型异常就可以 BaseException 派生;抛出异常时,尽量复用JDK已定义异常类型;finally 和 return 执行顺序如果 try 中有 return 语句, 那么

11410
领券