Что такое эквивалент С# для Java Throwable?

Что такое эквивалент С# для Java Throwable?

В Java корень иерархии классов исключений называется Throwable, а не Exception. У базового класса Throwable есть два производных класса:

Exception: для условий, которые разумное приложение может захотеть поймать.

Error: для серьезных проблем, которые разумная программа не должна пытаться поймать.

Таким Throwable базовый класс Throwable включает проблемы, которые разумная программа не должна пытаться поймать.

Ответ 1

Это будет класс Exception. В отличие от исключений в.NET нет отдельной "бросающейся" концепции.

Ответ 2

.Net допускает исключения любого класса, но С# ограничивает бросок и catch в Exception. Используйте предложение catch, которое не определяет ни тип, ни переменную для исключения исключений исключений.

Соответствующий spec-фрагмент:

Когда предложение catch указывает тип класса, тип должен быть System.Exception, тип, который происходит из System.Exception или типа параметра типа, который имеет System.Exception (или его подкласс) как его эффективный базовый класс.

Когда предложение catch указывает как тип класса, так и идентификатор, объявляется переменная исключения данного имени и типа. Переменная исключения соответствует локальной переменной с областью действия, которая распространяется на блок catch. Во время выполнения блока catch исключающая переменная представляет собой исключение, которое в настоящее время обрабатывается. Для проверки определенного назначения переменная исключения считается определенно назначенной во всей своей области.

Если предложение catch не содержит имя переменной исключения, невозможно получить доступ к объекту исключения в блоке catch.

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

Некоторые языки программирования могут поддерживать исключения, которые не могут быть представлены как объект, производный от исключения System.Exception, хотя такие исключения никогда не могут быть сгенерированы кодом С#. Для исключения таких исключений может быть использовано общее правило catch. Таким образом, общее предложение catch семантически отличается от того, которое указывает тип System.Exception, поскольку первое может также перехватывать исключения из других языков.

.Net 4.0 представляет концепцию, похожую на класс Java Error. В то время как Исключения с нарушенным состоянием расширяют исключение, применяются только методы с HandleProcessCorruptedStateExceptionsAttribute.