我有一个接受用户登录的网络表单 - 密码,电子邮件。然后,我调用一个授权类来测试字段,并在适用的情况下抛出异常。我的问题是:在我的代码隐藏页面中,我应该如何管理/使用这些异常?
授权类 - 电子邮件属性
public string Email
{
get { return _email; }
set
{
if (value == null)
throw new ArgumentNullException("Email", "The email address is null");
if (value == string.Empty)
throw new ArgumentException("Email", "No email has been entered");
if (!IsValidEmail(value))
throw new ArgumentException("Email", "This is an invalid email address");
_email = value;
}
}
代码隐藏页面 - 某种检查
if (auth.Login(txtUsername.Text, txtPassword.Text) == true) //or whatever the invokation might be
// do somehting with exceptions???
此时我不知道我应该对Authorization类生成的异常做些什么。
答案 0 :(得分:3)
您还应该进行客户端验证,txtUserName.Text
和txtPassword.Text
字段不为空。
对于异常,您应该有一个全局处理程序,如果抛出异常(即,如果客户端验证无法捕获某些内容并且服务器引发异常),则会向用户提供一条很好的错误消息。您不应该在客户端上捕获个别异常。
答案 1 :(得分:1)
答案 2 :(得分:1)
您不需要捕获ArgumentException
- 这是一种编程错误,而不是运行时异常的异常。 (例如,如果用户的输入无效,则代码应抛出FormatException
。)
答案 3 :(得分:1)
你需要这样的东西:
try {
auth.Login(txtUsername.Text, txtPassword.Text);
}catch(ArgumentNullException anex){
//output the message to the user
}catch(ArgumentException aex){
//output the message to the user
}
您需要捕获您抛出的每种类型的异常(或仅捕获Exception
)。
答案 4 :(得分:1)
通常,您的应用程序需要对这些异常做出反应,因为它们代表特定的状态。响应可以是报告(记录)适用的异常,将用户重定向到错误页面,或者提供与异常上下文相关的响应(例如,由于输入数据无效,这是一个例外,如果是,则显示表单错误信息等。)。
答案 5 :(得分:1)
try
{
auth.Login(txtUsername.Text, txtPassword.Text);
}
catch (ArgumentException e)
{
//Handle Exception here
MessageBox.Show(e.ToString(), "EMail invalid");
}
答案 6 :(得分:1)
我会公开公开IsValidEmail
并在调用login方法之前进行检查。然后你可以在提交之前提出错误。