Я изучаю обработку исключений, особенно обработку исключений на C# (я знаю, а не лучшая идея). Я обнаружил, что метод base() (?) Используется при создании пользовательских исключений. Хотя мне удалось создать настраиваемое исключение, я не уверен, почему он работает.base() конструктор в пользовательской обработке исключений C#. Как это работает?
class Calculator
{
public int power(int n, int p)
{
if(n < 0 || p < 0)
{
throw (new Exp("n and p should be non-negative"));
}
return (int)Math.Pow(n, p);
}
}
public class Exp : System.Exception
{
public Exp(string message) : base(message)
{
//Nothing here
}
}
Calculator.power (п, р) поставлена задача возвращая п возведенное в р мощности. Если n или p являются отрицательными, это генерирует исключение.
То, что я не понимаю, это почему Exp («n и p должны быть неотрицательными») печатает сообщение. В классе исключений нет базового конструктора, который возвращает строку.
Единственный конструктор, который существует в классе Exp, в нем ничего нет. И все же, если я передаю строку в этот метод конструктора, он печатает.
Что происходит?
Может быть ToString() вызывается исключение - Консоль сделал это автоматически. –
Я надеюсь, что вы сделаете лучшую практику и создадите три конструктора. –