任何人都可以了解抛出自定义异常(继承自System.Exception)的优缺点,或者使用它们的正确方法?我已经知道何时/何时不抛出异常,但我正在寻找有关如何创建自己的自定义异常的指导.
这些都是很棒的帖子.到目前为止,我最同意Brian Rasmussen - 当您想要处理不同类型的特定异常时创建自定义异常.
也许一个例子会有所帮助.这是一个人为的例子,在日常代码中可能有用,也可能没用.假设您有一个负责验证用户的类.除了对用户进行身份验证之外,该类还具有锁定机制,可在多次尝试失败后锁定用户.在这种情况下,您可能会将类设计为两个自定义异常的一部分:AuthenticationFailedException和UserLockedOutException.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();
}
Run Code Online (Sandbox Code Playgroud)
再次,一个人为的例子.但希望它能说明您希望如何以及为什么要创建自定义异常.在这种情况下,AuthProvider类的用户以不同的方式处理每个自定义异常.如果AuthenticateUser方法只是简单地抛出Exception,就没有办法的不同原因来区分为何抛出异常.
| 归档时间: |
|
| 查看次数: |
2861 次 |
| 最近记录: |