• СДО Росдистант
• Текущий курс
• Практикум по программированию на C# 2
• Лекция 1.1. Обработка исключений
• Промежуточный тест 1
Внимательно изучите фрагмент кода и выберите верный ответ.
class ThrowTest3
{
static void ProcessString(string s)
{ if (s == null) throw new ArgumentNullException();
}
static void Main()
{ try
{ string s = null;
ProcessString(s);
}
catch (ArgumentNullException e)
{ Console.WriteLine("{0} First exception caught.", e);
}
catch (Exception e)
{ Console.WriteLine("{0} Second exception caught.", e);
}
}
}
Возникнет следующая ошибка:
A previous catch clause already catches all exceptions of this or a super type ('System.Exception')
В консоль будет выведено сообщение:
System.Exception: Exception of type 'System.Exception' was thrown.
at ConsoleApp4.ThrowTest3.ProcessString(String s) ... Second exception caught.
В консоль будет выведено сообщение:
System.ArgumentNullException: Value cannot be null.
at Test.ThrowTest3.ProcessString(String s) ... First exception caught.
В консоль будет выведено сообщение:
First exception caught.
Выберите верные утверждения для понятия «исключение».
Ошибка компиляции называется исключением
Является объектом, потому что для генерации исключения CLR нужно создать соответствующий объект класса
Ошибка выполнения называется исключением
Является сигналом, так как, изучив сообщение об исключении, разработчик предпримет необходимые действия против этого исключения
Является событием, поскольку при возникновении исключения среда CLR внутренне выполняет некоторую логику для подготовки сообщений, связанных с этим исключением
Изучите приведенный ниже код. Что будет выведено в консоль в результате его выполнения?
static void Main(string[] args)
{
int a, b, c;
try
{ a = 40;
b = 0;
c = a / b;
Console.WriteLine("C VALUE = " + c);
}
catch (Exception ex)
{ Console.WriteLine(ex.Message);
Console.WriteLine(ex.HelpLink);
}
}
возникнет ошибка компиляции
Attempted to divide by zero.
DivideByZeroException
C VALUE = 0
Изучите представленный ниже код. Что будет выведено в консоль в результате его выполнения?
static void checkAge(int age)
{ if (age < 18) { throw new ArithmeticException("Access denied - You must be at least 18 years old."); } else { Console.WriteLine("Access granted - You are old enough!"); } } static void Main(string[] args) { checkAge(20); } Access granted - You are old enough! System.IndexOutOfRangeException: 'Index was outside the bounds of the array.' Возникнет ошибка компиляции System.ArithmeticException: 'Access denied - You must be at least 18 years old.' Дан код, представленный ниже. Что будет выведено в консоль в результате его выполнения? class Program { static void Main(string[] args) { int a, b, c; a = 20; b = 0; if (b == 0) { Console.WriteLine("second number should not be zero"); } else { c = a / b; Console.WriteLine("C VALUE = " + c); } } } Возникнет ошибка выполнения Возникнет ошибка компиляции C VALUE = 0 second number should not be zero Внимательно изучите фрагмент кода. Что будет выведено в консоль? static void Main() { unchecked { b = 5; a = 125; result = (byte)(a * b); Console.WriteLine("Непроверенный на переполнение результат: " + result); } catch (OverflowException exc) { Console.WriteLine(exc.Message); } В консоль будет выведено сообщение: Arithmetic operation resulted in an overflow В консоль будет выведено сообщение: Непроверенный на переполнение результат: 113 В консоль будет выведено сообщение: Непроверенный на переполнение результат: 1 В консоль будет выведено сообщение: Проверенный на переполнение результат: 84 Ознакомьтесь с кодом, представленным ниже. Что будет выведено в консоль в результате его выполнения? int x = 1; int y = 0; try { int result = x / y; } catch(DivideByZeroException) when (y==0 && x == 0) { Console.WriteLine("y не должен быть равен 0"); } catch(DivideByZeroException ex) { Console.WriteLine(ex.Message); } Возникнет ошибка компиляции Attempted to divide by zero y не должен быть равен 0 DivideByZeroException Изучите код, представленный ниже. Укажите верные утверждения. static void Main(string[] args) { try { object obj = "you"; int num = (int)obj; Console.WriteLine($"Результат: {num}"); } catch (DivideByZeroException) { Console.WriteLine("Возникло исключение DivideByZeroException"); } catch (IndexOutOfRangeException) { Console.WriteLine("Возникло исключение IndexOutOfRangeException"); } catch (Exception ex) { Console.WriteLine($"Исключение: {ex.Message}"); } } Программа аварийно завершит свое выполнение Блок catch (Exception ex){} будет обрабатывать все исключения, кроме DivideByZeroException и IndexOutOfRangeException Сначала обрабатывается исключение DivideByZeroException и IndexOutOfRangeException, и только потом Exception В блоке try генерируется исключение типа InvalidCastException В блоке try генерируется исключение типа IndexOutOfRangeException Сопоставьте свойства исключения Exception с их описаниями. StackTrace • Возвращает строковое представление стека вызовов, которые привели к возникновению исключения InnerException • Хранит информацию об исключении, которое послужило причиной текущего исключения Source • Хранит имя объекта или сборки, которые вызвали исключение TargetSite • Возвращает метод, в котором было вызвано исключение Message • Хранит сообщение об исключении, текст ошибки • Хранит сообщение об исключении, текст ошибки • Возвращает строковое представление стека вызовов, которые привели к возникновению исключения • Хранит информацию об исключении, которое послужило причиной текущего исключения • Хранит имя объекта или сборки, которые вызвали исключение • Возвращает метод, в котором было вызвано исключение Какое из утверждений верно для понятия «класс исключения NotSupportedException»? Возникает, когда вызов метода недопустим в текущем состоянии объекта Возникает, когда метод или операция не поддерживаются Возникает, когда указанный ключ для доступа к члену в коллекции не существует Возникает, когда индекс массива выходит за нижнюю или верхнюю границы массива или коллекции Внимательно изучите фрагмент кода и укажите верный ответ. int x = 5; int y = 6; int mydiv = x / y; Console.WriteLine(mydiv); Console.WriteLine(myNumbers[10]); В консоль будет выведено сообщение: null В консоль будет выведено сообщение: Index was outside the bounds of the array Возникнет ошибка времени выполнения Возникнет ошибка времени компиляции Изучите приведенный ниже код и выберите верные утверждения. static void Main(string[] args) { try { object obj = "you"; int num = (int)obj; Console.WriteLine($"Результат: {num}"); } catch (DivideByZeroException) { Console.WriteLine("Возникло исключение DivideByZeroException"); } catch (IndexOutOfRangeException) { Console.WriteLine("Возникло исключение IndexOutOfRangeException"); } } Программа аварийно завершит свое выполнение В блоке try генерируется исключение типа DivideByZeroException В блоке try генерируется исключение типа IndexOutOfRangeException В блоке try генерируется исключение типа InvalidCastException Ниже приведен пример кода. Укажите верное утверждение. static void Main() {try { string value = null; if (value.Length == 0) { Console.WriteLine(value); } } catch(NullReferenceException e) {Console.WriteLine(e.Message); } } В консоль будет выведено значение 0 В консоль будет выведено значение 4 Будет вызвано исключение System.NullReferenceException: "Object reference not set to an instance of an object." Возникнет ошибка компиляции Ниже приведен код. Что будет выведено в консоль в результате его выполнения? static void Main(string[] args) { int a, b, c; try { a = 20; b = 0; c = a / b; Console.WriteLine("C VALUE = " + c); } catch { Console.WriteLine("error occurred...."); } } error occurred.... DivideByZeroException C VALUE = 0 Возникнет ошибка компиляции Ниже приведен код. Что будет выведено в консоль? static void Main(string[] args) { try { string message = "Hello world"; if (message.Length > 6)
{throw new Exception("Длина строки больше 6 символов");
}
}
catch (Exception e)
{ Console.WriteLine($"Ошибка: {e.Message}");
}
}
DivideByZeroException
Ошибка: Длина строки больше 6 символов
Возникнет ошибка компиляции
Attempted to divide by zero
Внимательно изучите код. Что будет выведено в консоль в результате его выполнения?
try
{ int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{ Console.WriteLine("Something went wrong.");
}
finally
{ Console.WriteLine("The 'try catch' is finished.");
}
Something went wrong.
The 'try catch' is finished.
System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
Something went wrong.
The 'try catch' is finished.
Изучите приведенный ниже код. Что будет выведено в консоль в результате его выполнения?
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
Возникнет ошибка компиляции
Attempted to divide by zero
System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
DivideByZeroException
Укажите верное утверждение для понятия «класс исключения ArgumentOutOfRangeException».
Возникает, когда методу передается нулевой аргумент
Возникает, когда целое значение делится на ноль
Возникает, когда ненулевой аргумент, переданный методу, недопустим
Возникает, когда значение аргумента выходит за пределы диапазона допустимых значений
Соотнесите специализированные типы исключений с их описаниями.
DivideByZeroException • Представляет исключение, которое генерируется при делении на ноль
InvalidCastException • Генерируется при попытке произвести недопустимые преобразования типов
ArgumentException • Генерируется, если в метод для параметра передается некорректное значение
ArgumentOutOfRangeException • Генерируется, если значение аргумента находится вне диапазона допустимых значений
IndexOutOfRangeException • Генерируется, если индекс элемента массива или коллекции находится вне диапазона допустимых значений
• Генерируется, если значение аргумента находится вне диапазона допустимых значений
• Генерируется, если в метод для параметра передается некорректное значение
• Генерируется при попытке произвести недопустимые преобразования типов
• Генерируется, если индекс элемента массива или коллекции находится вне диапазона допустимых значений
• Представляет исключение, которое генерируется при делении на ноль
Ниже приведен код. Что будет выведено в консоль?
static void checkAge(int age)
{ if (age < 18)
{
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else
{ Console.WriteLine("Access granted - You are old enough!");
}
}
static void Main(string[] args)
{ checkAge(15);
}
System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
Access granted - You are old enough!
System.ArithmeticException: 'Access denied - You must be at least 18 years old.'
Возникнет ошибка компиляции
Отзывы
Отзывов пока нет.