为了账号安全,请及时绑定邮箱和手机立即绑定

抛出 TimeoutException 是一个好习惯吗?

抛出 TimeoutException 是一个好习惯吗?

C#
素胚勾勒不出你 2022-01-09 10:42:44
我正在为设备 IO 类定义一个异常类。当与设备的通信超时时,我想抛出一个异常。以下是我目前拥有的:    /// <summary>    /// The exception that is thrown when the time allotted for talking to the FANUC controller has expired.    /// </summary>    [Serializable]    public class FanucTimeoutException : TimeoutException    {        /// <summary>        /// Initializes a new instance of the <c>FanucLib.FanucTimeoutException</c> class.        /// </summary>        public FanucTimeoutException() { }        /// <summary>        /// Initializes a new instance of the <c>FanucLib.FanucTimeoutException</c> class with the specified error message.        /// </summary>        /// <param name="message">The message that describes the error. </param>        public FanucTimeoutException(string message) : base(message)        {        }        /// <summary>        /// Initializes a new instance of the <c>FanucLib.FanucTimeoutException</c> class with the specified error message and the address trying to access.        /// </summary>        /// <param name="message">The message that describes the error. </param>        /// <param name="address">The address trying to access.</param>        public FanucTimeoutException(string message, string address) : base($"{message} Address: {address}.")        {        }        public FanucTimeoutException(string message, Exception innerException) : base(message, innerException)        {        }        public FanucTimeoutException(string message, string address, Exception innerException) : base($"{message} Address: {address}.", innerException)        {        }        /// <inheritdoc />        public FanucTimeoutException(SerializationInfo info, StreamingContext context)        {        }    }但是,我不确定 throw 是否是一个好习惯TimeoutException。无论C#教程和净指导对例外的设计不谈TimeoutException。他们只建议使用少数异常类型,例如InvalidOperationException和ArgumentException。我是否仅限于使用这些建议的异常类型,或者我是否可以自由使用除指南中建议的异常类型之外的全部范围?
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

这应该是完全可以接受的。我无法想象为什么有人会不同意。甚至还有一些被认为是“不良做法”的例外仍然有其用途。这种做法是否可以接受是主观的,但在你的情况下,我会说这很好。任何有更多经验的人都可以不同意。


查看完整回答
反对 回复 2022-01-09
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

我个人觉得抛出自定义异常比抛出标准异常(也可以通过代码中的其他区域抛出)更好,因此无法查明实际的源代码问题。

此外,出于可读性和可维护性的目的,我觉得应该尝试抛出异常而不是返回错误代码等(0、1 等)。本指南提供了有关最佳实践的更多信息:

https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/exceptions


查看完整回答
反对 回复 2022-01-09
  • 2 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信