2009-10-16 91 views
1

我想用自定义的异常处理,例如自定义错误处理ASP.NET

而不是使用(异常前)我想用(LoginException异常前)或(RegistrationException前)或(SomeNameException前)

是否有可能在ASP.NET webforms中设计这种自定义异常处理?

+0

Dup的http://stackoverflow.com/questions/1573130/net-throwing-custom-例外 – andrewWinn 2009-10-16 14:21:53

+1

这不是真的重复,但它与该问题有关。拉胡尔斯,我特别看这个答案,并在其中包含的链接:http://stackoverflow.com/questions/1573130/net-throwing-custom-exceptions/1573156#1573156 – 2009-10-16 14:32:55

+0

非常感谢你,信息/链接是非常有帮助的 – 2009-10-16 14:40:37

回答

2

是的,但您需要做的是首先创建您自己的自定义例外。您需要从Exception基类中派生异常。这里有一个例子:

[Serializable] 
public class LoginFailedException: Exception 
{ 
    public LoginFailedException() : base() 
    { 
    } 

    public LoginFailedException(string message) 
     : base(message) 
    { 
    } 

    public LoginFailedException(string message, Exception innerException) 
     : base(message, innerException) 
    { 
    } 

    protected LoginFailedException(SerializationInfo info, StreamingContext context) 
     : base(info, context) 
    { 
    } 
} 

然后在你的代码,你需要提出这个例外适当:

private void Login(string username, string password) 
{ 
    if (username != DBUsername && password != DBPassword) 
    { 
      throw new LoginFailedException("Login details are incorrect"); 
    } 

    // else login... 
} 

private void ButtonClick(object sender, EventArgs e) 
{ 
    try 
    { 
      Login(txtUsername.Text, txtPassword.Text); 
    } 
    catch (LoginFailedException ex) 
    { 
      // handle exception. 
    } 
} 
+0

是的,谢谢你,这就是我正在寻找。 – 2009-10-16 14:42:00

0

你的意思是这样的:

 
try{ 
    somefunc(); 
}catch(LoginException ex){ 

}catch(RegistrationException ex){ 

}catch(SomeNameException ex){ 

} 

还是你的意思编码类抛出的异常?

+0

是的,我想代码这样 – 2009-10-16 14:33:46