2016-06-28 9 views
4

Я ищу Python built-in exceptions и интересно, какой самый близкий эквивалент Java UnsupportedOperationException. NotImplementedError близко, но, похоже, предлагает что-то немного другое. Должен ли я использовать RuntimeError или реализовать свои собственные Exception?Что такое эквивалент Python UnsupportedOperationException Java?

+1

Я бы сказал, что они означают одно и то же, используя разные слова. Он не поддерживается, поскольку он не был реализован, и он не был реализован, потому что он не поддерживается. Это зависит только от вашей точки зрения, т. Е. Намерения. – Andreas

+0

@ Андреас Это хороший способ взглянуть на это. Думаю, я могу объяснить в сообщении об ошибке, почему метод не реализован. – erwaman

ответ

7

Ближайший эквивалент - просто не реализовать неподдерживаемый метод. Получающееся исключение, если вы пытаетесь использовать несуществующий метод, - это AttributeError.

+2

@gotnull: Потому что он отвечает на вопрос. – user2357112

+0

Я хотел бы определить метод и иметь тело, которое просто 'raise ', и в сообщении об исключении объясняют, почему метод не должен быть реализован/поддерживается. Я боюсь, что если я этого не сделаю, кто-то может попытаться реализовать этот метод в будущем, не понимая, почему он не был реализован изначально. – erwaman

+1

@erwaman Так поднимите 'AttributeError'. Или, если хотите, поднимите свой собственный тип исключения. – dimo414

1

Я не знаю Java, но, глядя на то, с чем вы связались (и несколько примеров в Интернете), я бы сказал, что нет единого эквивалента. Это довольно широкое описание для типа исключения.

Если операция не поддерживается, поскольку типы операндов неверны, вы должны использовать TypeError. Если он не поддерживается, потому что значения как-то несовместимы, вы должны использовать ValueError. Или, как замечает пользователь2357112, вы просто ничего не делаете и получаете AttributeError, когда пытаетесь получить доступ к несуществующему методу.