Я создал пользовательский класс исключений, как показано нижеЛовля пользовательских исключений в C#
namespace testingEXception
{
public class CustomException : Exception
{
public CustomException()
{
}
public CustomException(string message)
: base(message)
{
}
public CustomException(string message, Exception innerException)
: base(message, innerException)
{
}
}
}
Я метание исключения из другого проекта в том же растворе, как этого
namespace ConsoleApplication1
{
public class testClass
{
public void compare()
{
if (1 > 0)
{
throw new CustomException("Invalid Code");
}
}
}
}
и ловил его, как это
namespace testingEXception
{
class Program
{
static void Main(string[] args)
{
try
{
testClass obj = new testClass();
obj.compare();
}
catch (testingEXception.CustomException ex)
{
//throw;
}
catch (Exception ex)
{
// throw new CustomException(ex.Message);
}
Console.ReadKey();
}
}
}
Проблема заключается в том, что исключение не попадает в первый улов, а вместо gett который пойман вторым уловом, несмотря на то, что тип исключения показывает CustomException.
То, что вы показываете, является правильным и должно работать. Так или вы не делаете то, что думаете, что делаете, или что происходит не так, как вы думаете. Убедитесь, что у вас нет нескольких CustomException в разных пространствах имен (в VS do 'Go to definition' в броске и в catch-версии CustomeException) – pm100
С помощью «throw» в catch (CustomException) он будет повторно заброшен и пойман путем улова (исключение). Это то, что вы видите? –
@PeterRitchie при отладке, отладчик не останавливается на первом catch, вместо этого останавливается на втором улове. –