Я работаю над библиотекой для взаимодействия с API. Позже я буду использовать его для создания некоторых инструментов.Где обращаться с исключениями - в библиотечном или пользовательском коде
Теперь мне интересно, где «действительно» обрабатывать исключения.
- Если библиотека обрабатывает исключение и возвращать только для кодов примеров ошибок, как «{„ошибка“:„URL не найден“}»
- Пропустите исключение кода пользователя, и пусть он будет обрабатываться здесь
Ниже несколько примеров, которые я придумал б/у до сих пор
Пример
import urllib2
class Request:
def send(self, url):
try:
req = urllib2.Request(url)
request = urllib2.urlopen(req)
response = request.read()
return response
except urllib2.URLError as ue:
return 'URL not found'
request = Request()
print request.send('https://not-a-real-url-.com')
Печатный Исключение URL не найден
Но я мог бы также вернуть URLError
<urlopen error [Errno 8] nodename nor servname provided, or not known>
Или поднять ошибку, чтобы код пользователя ручка
try:
print request.send('https://not-a-real-url-.com')
except urllib2.URLError as ue:
print 'error'
Поскольку я m, создавая Библиотеку и Кодекс, я могу обращаться с ней, как я думаю, лучше, но если я хочу поделиться библиотекой, я хочу получить лучшее исключение ошибки, поэтому пользователь не сталкивается с огромными проблемами и требует отладки.
Я не видел ни одного вопроса, который действительно был моим, поэтому я надеюсь, что это не дубликат.
Спасибо вам за ввод! Майкл
Я думаю, вы должны напечатать некоторые пользовательские сообщения об ошибке, что может вызвать эту ошибку и после этого поднимите же исключение , Таким образом, пользователи будут лучше подвержены исключениям, и это поможет им в отладке. –
@ HassanMehmood хорошая точка для сообщения об ошибке, это то, что я обычно пропустил, чтобы поместить его сюда. Таким образом, вы позволите родительскому коду обрабатывать исключение? Зачем? – the0MIKE