Исключение какого типа нужно выбрасывать, если тип переданного аргумента не соответствует необходимому? Такая ситуация с проверкой типов вручную (а не компилятором) может возникнуть, например, при реализации метода какого-либо интерфейса, когда методу необходимо передать object
, но конкретная реализация будет работать только с заранее известным типом.