Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

С# — обработка исключений

Исключением является проблема, возникающая во время выполнения программы. Исключение C# – это реакция на исключительное обстоятельство, возникающее во время работы программы, например на попытку деления на ноль.

Исключения позволяют передавать управление из одной части программы в другую. Обработка исключений C# основана на четырех ключевых словах:try. , поймать , наконец и бросить .

Синтаксис

Предполагая, что блок вызывает исключение, метод перехватывает исключение, используя комбинацию ключевых слов try и catch. Блок try/catch размещается вокруг кода, который может генерировать исключение. Код в блоке try/catch называется защищенным кодом, а синтаксис использования try/catch выглядит следующим образом —

try {
   // statements causing exception
} catch( ExceptionName e1 ) {
   // error handling code
} catch( ExceptionName e2 ) {
   // error handling code
} catch( ExceptionName eN ) {
   // error handling code
} finally {
   // statements to be executed
}

Вы можете перечислить несколько операторов catch, чтобы перехватывать различные типы исключений, если ваш блок try вызывает более одного исключения в разных ситуациях.

Классы исключений в C#

Исключения C# представлены классами. Классы исключений в C# в основном прямо или косвенно являются производными от класса System.Exception. учебный класс. Некоторыми классами исключений, производными от класса System.Exception, являются System.ApplicationException. и System.SystemException классы.

Исключение System.ApplicationException class поддерживает исключения, генерируемые прикладными программами. Следовательно, исключения, определенные программистами, должны быть производными от этого класса.

System.SystemException class является базовым классом для всех предопределенных системных исключений.

В следующей таблице представлены некоторые из предопределенных классов исключений, производных от класса System.SystemException —

<тд>

System.IO.IOException

Обрабатывает ошибки ввода-вывода.

<тд>

System.IndexOutOfRangeException

Обрабатывает ошибки, возникающие, когда метод ссылается на индекс массива вне допустимого диапазона.

<тд>

System.ArrayTypeMismatchException

Обрабатывает ошибки, возникающие, когда тип не соответствует типу массива.

<тд>

System.NullReferenceException

Обрабатывает ошибки, возникающие при обращении к нулевому объекту.

<тд>

System.DivideByZeroException

Обрабатывает ошибки, возникающие при делении делимого на ноль.

<тд>

System.InvalidCastException

Обрабатывает ошибки, возникающие во время приведения типов.

<тд>

System.OutOfMemoryException

Обрабатывает ошибки, вызванные недостатком свободной памяти.

<тд>

System.StackOverflowException

Обрабатывает ошибки, вызванные переполнением стека.

Серийный номер Класс исключения и описание
1
2
3
4
5
6
7
8

Обработка исключений

C# предоставляет структурированное решение для обработки исключений в виде блоков try и catch. С помощью этих блоков основные операторы программы отделяются от операторов обработки ошибок.

Эти блоки обработки ошибок реализуются с помощью функции try. , поймать и наконец ключевые слова. Ниже приведен пример создания исключения при выполнении условия деления на ноль —

Живая демонстрация
using System;

namespace ErrorHandlingApplication {
   class DivNumbers {
      int result;
      
      DivNumbers() {
         result = 0;
      }
      public void division(int num1, int num2) {
         try {
            result = num1 / num2;
         } catch (DivideByZeroException e) {
            Console.WriteLine("Exception caught: {0}", e);
         } finally {
            Console.WriteLine("Result: {0}", result);
         }
      }
      static void Main(string[] args) {
         DivNumbers d = new DivNumbers();
         d.division(25, 0);
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Exception caught: System.DivideByZeroException: Attempted to divide by zero. 
at ...
Result: 0

Создание пользовательских исключений

Вы также можете определить свое собственное исключение. Определяемые пользователем классы исключений являются производными от класса Exception. учебный класс. Следующий пример демонстрирует это —

Живая демонстрация
using System;

namespace UserDefinedException {
   class TestTemperature {
      static void Main(string[] args) {
         Temperature temp = new Temperature();
         try {
            temp.showTemp();
         } catch(TempIsZeroException e) {
            Console.WriteLine("TempIsZeroException: {0}", e.Message);
         }
         Console.ReadKey();
      }
   }
}
public class TempIsZeroException: Exception {
   public TempIsZeroException(string message): base(message) {
   }
}
public class Temperature {
   int temperature = 0;
   
   public void showTemp() {
      
      if(temperature == 0) {
         throw (new TempIsZeroException("Zero Temperature found"));
      } else {
         Console.WriteLine("Temperature: {0}", temperature);
      }
   }
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

TempIsZeroException: Zero Temperature found

Бросание предметов

Вы можете создать объект, если он прямо или косвенно является производным от System.Exception. учебный класс. Вы можете использовать оператор throw в блоке catch, чтобы выбросить текущий объект как -

Catch(Exception e) {
   ...
   Throw e
}

Язык C

  1. С# с использованием
  2. C Обработка файлов
  3. Обработка исключений Python с использованием оператора try, exclude и finally
  4. Обработка исключений Java
  5. Обработка исключений C++:пример Try, Catch, Throw
  6. Обработка исключений Python:попробовать, поймать, наконец и поднять [Пример]
  7. Обработка сигналов С++
  8. Java 9 — модульная система
  9. ПЛК против РСУ
  10. Модульная система обработки поддонов обеспечивает гибкость производства