{"action":"created","issue":{"url":"https://api.github.com/repos/UCASoft/UcaOrm/issues/3","repository_url":"https://api.github.com/repos/UCASoft/UcaOrm","labels_url":"https://api.github.com/repos/UCASoft/UcaOrm/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/UCASoft/UcaOrm/issues/3/comments","events_url":"https://api.github.com/repos/UCASoft/UcaOrm/issues/3/events","html_url":"https://github.com/UCASoft/UcaOrm/issues/3","id":183933139,"number":3,"title":"e.printStackTrace()","user":{"login":"Miha-x64","id":14016119,"avatar_url":"https://avatars.githubusercontent.com/u/14016119?v=3","gravatar_id":"","url":"https://api.github.com/users/Miha-x64","html_url":"https://github.com/Miha-x64","followers_url":"https://api.github.com/users/Miha-x64/followers","following_url":"https://api.github.com/users/Miha-x64/following{/other_user}","gists_url":"https://api.github.com/users/Miha-x64/gists{/gist_id}","starred_url":"https://api.github.com/users/Miha-x64/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Miha-x64/subscriptions","organizations_url":"https://api.github.com/users/Miha-x64/orgs","repos_url":"https://api.github.com/users/Miha-x64/repos","events_url":"https://api.github.com/users/Miha-x64/events{/privacy}","received_events_url":"https://api.github.com/users/Miha-x64/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-10-19T11:14:58Z","updated_at":"2016-10-21T13:02:54Z","closed_at":null,"body":"Добрый день. Читал Хабр, пришёл отсюда: https://habrahabr.ru/post/281226/#comment_8857017\r\nЗа неимением права комментировать на Хабре, отвечу тут.\r\n\r\nВозьмём для примера такой метод:\r\n```\r\nObject getObject() {\r\n    try {\r\n        return getObjectSomewhere(); // 1\r\n    } catch (Exception e) {\r\n        e.printStackTrace();\r\n        return null;\r\n    }\r\n}\r\n```\r\nПопытка использовать этот метод:\r\n```\r\nToast.makeText(getActivity(), getObject().toString(), Toast.LENGTH_SHORT).show(); // 2\r\n                                        ^ NullPointerException\r\n```\r\n\r\nПроблема здесь в том, что вместо того чтобы повалиться прямо при возникновении проблемы, в точке \"1\", падение будет отложено до точки \"2\". Бывают гораздо более жёсткие и запутанные ситуации, когда падение надолго откладывается, ошибки проникают в базы данных, живут в продакшене и т. д..\r\n\r\nВ Java принято действовать строго, именно поэтому есть, например, метод Objects.requireNonNull().\r\n\r\nРекомендую книгу Effective Java автора Joshua Bloch, в частности главу про исключения, Item 65."},"comment":{"url":"https://api.github.com/repos/UCASoft/UcaOrm/issues/comments/255371243","html_url":"https://github.com/UCASoft/UcaOrm/issues/3#issuecomment-255371243","issue_url":"https://api.github.com/repos/UCASoft/UcaOrm/issues/3","id":255371243,"user":{"login":"Miha-x64","id":14016119,"avatar_url":"https://avatars.githubusercontent.com/u/14016119?v=3","gravatar_id":"","url":"https://api.github.com/users/Miha-x64","html_url":"https://github.com/Miha-x64","followers_url":"https://api.github.com/users/Miha-x64/followers","following_url":"https://api.github.com/users/Miha-x64/following{/other_user}","gists_url":"https://api.github.com/users/Miha-x64/gists{/gist_id}","starred_url":"https://api.github.com/users/Miha-x64/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Miha-x64/subscriptions","organizations_url":"https://api.github.com/users/Miha-x64/orgs","repos_url":"https://api.github.com/users/Miha-x64/repos","events_url":"https://api.github.com/users/Miha-x64/events{/privacy}","received_events_url":"https://api.github.com/users/Miha-x64/received_events","type":"User","site_admin":false},"created_at":"2016-10-21T13:02:54Z","updated_at":"2016-10-21T13:02:54Z","body":"Если вы не можете восстановиться после исключения, вообще не нужно его ловить.\r\nЕсли это проверяемое (checked) исключение, но вы считаете, что клиент вашей библиотеки не сможет восстановиться при его возникновении, можно обернуть его в непроверяемое, например:\r\n```\r\ncatch (SqlException e) {\r\n    throw new RuntimeException(e);\r\n}\r\n```\r\n`catch (Exception` — это вообще очень табу: будут проигнорированы любые исключения, в т. ч., например, NullPointerException, которое означает не сбой системы, а ошибку программирования."}}
{"actor":{"display_login":"Miha-x64"}}