Похоже, в основном InvalidOperationException
.
Если вы изучите документацию для каждой из перегрузок, она предоставит вам более подробную информацию. Например, см. XmlSerializer.Deserialize Method (XmlReader)
InvalidOperationException
будет содержать более подробную информацию о конкретной ошибке в свойстве InnerException
.
Edit:
XmlSerializer.Deserialize Method (XmlSerializationReader)
может выдавать NotImplementedException
, но это внутренний API и не предназначен для использования вашим кодом, поэтому не беспокойтесь об этом.
Редактировать 2:
Этот код:
var ms = new System.IO.MemoryStream();
var deser = new System.Xml.Serialization.XmlSerializer(typeof(string));
deser.Deserialize(ms);
броски:
System.InvalidOperationException: There is an error in XML document (0, 0). ---
System.Xml.XmlException: Root element is missing.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
... <snip> ...
Так что действительно похоже, что фреймворк всегда будет выдавать InvalidOperationException
.
Действительно, если вы не беспокоитесь о ошибочной отлове исключений, таких как ThreadAbortException
, вы, вероятно, наиболее безопасны при отлове всех исключений ...
Редактировать 3:
Использование Отражатель : метод Deserialize(stream)
читает поток с использованием XmlTextReader
и вызывает XmlSerializer.Deserialize Method (XmlReader, String)
. Этот метод выдает InvalidOperationException
при ошибке (согласно документации).
Редактировать 4:
Deserialize(stream)
также может выдать NullReferenceException
, если stream
равно нулю, поскольку вызывает конструктор XmlTextReader(Stream)
.