Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
См. MSDN:
CancelKeyPress с примерами кода:
.NETДля этого используется событие Console.CancelKeyPress . Вот как это используется:
public static void Main(string[] args)
{
Console.CancelKeyPress += delegate {
// call methods to clean up
};
while (true) {}
}
Когда пользователь нажимает Ctrl + C, код в делегате запускается, и программа завершается. Это позволяет выполнять очистку путем вызова необходимых методов. Обратите внимание, что код после выполнения делегата не выполняется.
Бывают и другие ситуации, когда это не поможет. Например, если программа в данный момент выполняет важные вычисления, которые нельзя сразу остановить. В этом случае правильная стратегия может заключаться в том, чтобы сказать программе выйти после завершения расчета. Следующий код дает пример того, как это может быть реализовано:
class MainClass
{
private static bool keepRunning = true;
public static void Main(string[] args)
{
Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) {
e.Cancel = true;
MainClass.keepRunning = false;
};
while (MainClass.keepRunning) {
// Do your work in here, in small chunks.
// If you literally just want to wait until ctrl-c,
// not doing anything, see the answer using set-reset events.
}
Console.WriteLine("exited gracefully");
}
}
Разница между этим кодом и первым примером заключается в том, что e.Cancel
имеет значение true, что означает, что выполнение продолжается после делегата. При запуске программа ожидает, пока пользователь нажмет Ctrl + C. Когда это произойдет, переменная keepRunning
изменяет значение, что вызывает выход из цикла while. Это способ корректного завершения программы.