Вот простое решение для простой функции:
.toJSON()
Метод Вместо сериализуемого класса JSON реализуйте метод сериализатора:
import json
class Object:
def toJSON(self):
return json.dumps(self, default=lambda o: o.__dict__,
sort_keys=True, indent=4)
Итак, вы просто вызываете его для сериализации:
me = Object()
me.name = "Onur"
me.age = 35
me.dog = Object()
me.dog.name = "Apollo"
print(me.toJSON())
выведет:
{
"age": 35,
"dog": {
"name": "Apollo"
},
"name": "Onur"
}
№
См. Прагматический взгляд на спецификации исключений по причинам, почему нет.
Единственный способ, которым вы можете «помочь», - это документировать исключения, которые может выдавать ваша функция, например, в виде комментария в заголовочном файле, объявляющего это. Это не применяется компилятором или чем-то еще. Используйте обзоры кода для этой цели.
Вы не должны использовать исключение здесь. Это, очевидно, не исключительный случай, если необходимо ожидать его везде, Вы используете эту функцию!
А лучшее решение состояло бы в том, чтобы заставить функцию возвращать экземпляр чего-то вроде этого. В сборках отладки (принимающий разработчиков осуществляют пути выполнения кода, которые они только что записали), они получат утверждение, если они забудут проверять ли операция, за которой следуют или нет.
class SearchResult
{
private:
ResultType result_;
bool succeeded_;
bool succeessChecked_;
public:
SearchResult(Result& result, bool succeeded)
: result_(result)
, succeeded_(succeeded)
, successChecked_(false)
{
}
~SearchResult()
{
ASSERT(successChecked_);
}
ResultType& Result() { return result_; }
bool Succeeded() { successChecked_ = true; return succeeded_; }
}
Вне вашего вопроса, поэтому я обсуждал не публиковать это, но в Java на самом деле есть 2 типа исключений, проверенных и непроверенных. Основное отличие состоит в том, что, как и в c[++]
, вам не нужно ловить непроверенное исключение.
Для хорошей ссылки попробуйте это
там способ, которым можно гарантировать, что выданные исключения всегда пойманы с помощью попытки/выгоды функцией вызова?
я нахожу его довольно забавным, что толпа Java - включая меня - старается избегать контролируемых исключительных ситуаций. Они пытаются проложить себе путь вокруг того, чтобы быть вынужденным поймать Исключения при помощи RuntimeExceptions.
Chris', вероятно, имеет лучший чистый ответ на вопрос:
Однако мне любопытно на предмет корня вопроса. Если пользователь должен всегда , обертывают вызов в блок попытки/выгоды, позвонивший пользователями должен функционировать, действительно выдают исключения во-первых?
Это - трудный вопрос для ответа без большего количества контекста относительно рассматриваемой кодовой базы. Стрелять от бедра, я думаю, что лучший ответ здесь должен обернуть функцию, таким образом, что рекомендуемый (если не только, в зависимости от полного стиля исключения кода) открытый интерфейс делает попытку/выгоду для пользователь. Если Вы просто пытаетесь удостовериться, что нет никаких необработанных исключений в Вашем коде, модульных тестах и не кодируют обзор, вероятно, лучшее решение.
Или вы можете начать создавать критические исключения. Конечно, исключение нарушения прав доступа привлечет внимание ваших пользователей.