gpt4 book ai didi

.NET 抛出自定义异常

转载 作者:行者123 更新时间:2023-12-04 02:49:07 24 4
gpt4 key购买 nike

任何人都可以阐明抛出自定义异常(从 System.Exception 继承)的利弊,或者使用它们的正确方法?我已经知道何时/何时不抛出异常,但我正在寻找有关如何创建自己的自定义异常的指导。

最佳答案

这些都是很棒的帖子。到目前为止,我最同意 Brian Rasmussen——当您想要处理不同类型的特定异常时创建自定义异常。

也许一个例子会有所帮助。这是一个人为的例子,在日常代码中可能有用也可能没用。假设您有一个类负责对用户进行身份验证。此类除了对用户进行身份验证外,还具有锁定机制,可在多次尝试失败后锁定用户。在这种情况下,您可以将两个自定义异常设计为类的一部分:AuthenticationFailedExceptionUserLockedOutException .您的 AuthenticateUser如果用户成功通过身份验证,方法将简单地返回而不抛出,抛出 AuthenticationFailedException如果用户认证失败,或者抛出 UserLockedOutException如果用户被锁定。

例如:

try
{
myAuthProvider.AuthenticateUser(username, password);
ShowAuthSuccessScreen();
}
catch(AuthenticationFailedException e)
{
LogError(e);
ShowAuthFailedScreen();
}
catch(UserLockedOutException e)
{
LogError(e);
ShowUserLockedOutScreen();
}
catch(Exception e)
{
LogError(e);
ShowGeneralErrorScreen();
}

再次,一个人为的例子。但希望它显示了您想要创建自定义异常的方式和原因。在这种情况下, AuthProvider 的用户类以不同的方式处理每个自定义异常。如果 AuthenticateUser方法只是简单地抛出 Exception ,将无法区分引发异常的不同原因。

关于.NET 抛出自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1573130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com