C#为Try-Catch错误指定名称

时间:2011-03-18 07:41:24

标签: c# error-handling try-catch

每个人都在C#中使用Try-Catch。我知道。

例如;

static void Main()
    {
        string s = null; // For demonstration purposes.

        try
        {            
            ProcessString(s);
        }

        catch (Exception e)
        {
            Console.WriteLine("{0} Exception caught.", e);
        }
    }
}

一切都好。

但是如何为特定错误指定名称?

例如;

try
{
   enter username;
   enter E-Mail;
}
catch
{

}
  • 如果用户名已存在,ErrorMessage - > (“用户名已存在”)
  • 如果电子邮件已存在,ErrorMessage - > (“电子邮件正在使用”)

我如何在C#

中执行此操作

最诚挚的问候,

Soner

6 个答案:

答案 0 :(得分:6)

if(UserNameAlreadyExists(username))
{
   throw new Exception("Username already exists");
}
if(EmailAlreadyExists(email))
{
   throw new Exception("Email already exists");
}

这将回答你的问题。

但异常处理不能用于执行那些检查。例外代价很高,并且适用于无法从错误中恢复的特殊情况。

答案 1 :(得分:3)

当您抛出异常时,您可以为它们分配消息:

throw new Exception("The username already exists");

但是我不认为你应该在这里抛出异常,因为你的应用程序将期望输入导致这些错误;他们不是特殊的条件。也许你应该使用验证器或其他类型的处理程序。

答案 2 :(得分:2)

try
{
    if (username exists)
    {
        throw new Exception("The Username Already Exist");
    }

    if (e-mail exists)
    {
        throw new Exception("The E-Mail Already Exist");
    }
}
catch(Exception ex)
{
    Console.WriteLine("The Error is{0}", ex.Message);
}

答案 3 :(得分:2)

我认为所有这些答案都指向了这个问题,但是如果你在将来的某个时候想要对每个例外进行不同的处理,你可以按照以下方式进行:

接下来的示例假设您实现了两个不同的例外

try
{
    if user name is exit
    {
        throw new UserNameExistsException("The Username Already Exist");
    }

    if e-mail is already exit
    {
        throw new EmailExistsException("The E-Mail Already Exist");
    }
}
catch(UserNameExistsException ex)
{
    //Username specific handling
}
catch(EmailExistsException ex)
{
    //EMail specific handling
}
catch(Exception ex)
{
    //All other exceptions come here!
    Console.WriteLine("The Error is{0}", ex.Message);
}

答案 4 :(得分:1)

您可以这样做:

if (UsernameAlreadyExcists(username))
{
    throw new Exception("The Username Already Exist");
}

答案 5 :(得分:1)

在C#中,可以创建我们自己的异常类。但是Exception必须是C#中所有异常的最终基类。因此,用户定义的异常类必须从Exception类或其标准派生类之一继承。

using System;
class MyException : Exception
{
  public MyException(string str)
  {
    Console.WriteLine("User defined exception");
  }
}
class MyClass
{
  public static void Main()
  {
    try
    {
      throw new MyException("user exception");
    }
    catch(Exception e)
    {
      Console.WriteLine("Exception caught here" + e.ToString());
    }      
  }
}

你可以抛出这些异常并在你的应用程序中的任何地方抓住它们,虽然我不会在这种情况下使用例外。