代码不会在C#中捕获FormatException

时间:2012-08-30 13:33:00

标签: c# exception-handling try-catch formatexception

我在班级ProductServices中有以下方法:

public bool IsDownloadAllowed(int Id, string productId)
{
  if (CustomStringFunctions.IsGuid(productId))
  {
     //Do Something
  }
  else
  {
     throw new FormatException("The Guid must be a valid Guid!");
  }
}

如果我在以下说明中使用该方法:

var _productServices = new ProductServices();
try
{
   var flag = _productServices.IsDownloadAllowed(Id, productId);
   //do something
}

catch (Exception e)
{
   //handle exception
}

catch语句未捕获该异常。我还尝试将Exception替换为FormatException而没有运气。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您必须在此代码中使用静音例外

if (CustomStringFunctions.IsGuid(productId))
  {
     //Do Something
  }

你必须确保在发生时抛出异常(在Do Something中)

静音例外示例

Try
{

}
Catch(Exception ex)
{
   //throw don't exist
}

答案 1 :(得分:1)

您的代码看起来是正确的。您的问题的可能解释是CustomStringFunctions.IsGuid错误地返回true,因此正在执行\\do something分支而不是抛出异常分支。