51.3. Ð ÑководÑÑво по ÑÑÐ¸Ð»Ñ ÑообÑений об оÑибкаÑ
ÐÑо ÑÑководÑÑво по ÑÑÐ¸Ð»Ñ Ð¿ÑедлагаеÑÑÑ Ð² надежде обеÑпеÑиÑÑ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±ÑазнÑй и понÑÑнÑй полÑзоваÑÐµÐ»Ñ ÑÑÐ¸Ð»Ñ Ð´Ð»Ñ Ð²ÑÐµÑ ÑообÑений, коÑоÑÑе вÑдаÑÑ Postgres Pro.
51.3.1. ЧÑо и кÑда вÑводиÑÑ
ÐÑновное ÑообÑение должно бÑÑÑ ÐºÑаÑким, ÑакÑологиÑеÑким и, по возможноÑÑи, не говоÑиÑÑ Ð¾ ÑонкоÑÑÑÑ ÑеализаÑии, напÑимеÑ, не ÑпоминаÑÑ ÐºÐ¾Ð½ÐºÑеÑнÑе имена ÑÑнкÑий. Ðод «кÑаÑким» понимаеÑÑÑ Â«Ð´Ð¾Ð»Ð¶Ð½Ð¾ ÑмеÑаÑÑÑÑ Ð² одной ÑÑÑоке пÑи обÑÑнÑÑ ÑÑловиÑÑ Â». ÐополниÑелÑное подÑобное ÑообÑение добавлÑеÑÑÑ, когда кÑаÑкого ÑообÑÐµÐ½Ð¸Ñ Ð½ÐµÐ´Ð¾ÑÑаÑоÑно, или Ð²Ñ ÑÑиÑаеÑе, ÑÑо нÑжно ÑпомÑнÑÑÑ ÐºÐ°ÐºÐ¸Ðµ-Ñо внÑÑÑенние деÑали, напÑимеÑ, конкÑеÑнÑй ÑиÑÑемнÑй вÑзов, в коÑоÑом пÑоизоÑла оÑибка. РоÑновное, и подÑобное ÑообÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑообÑаÑÑ Ð¸ÑклÑÑиÑелÑно ÑакÑÑ. ЧÑÐ¾Ð±Ñ Ð¿ÑедложиÑÑ ÑеÑение пÑоблемÑ, оÑобенно, еÑли ÑÑо ÑеÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ñименимо не вÑегда, пеÑедайÑе его в ÑообÑении-подÑказке.
ÐапÑимеÑ, вмеÑÑо:
IpcMemoryCreate: оÑибка в shmget(клÑÑ=%d, ÑазмеÑ=%u, 0%o): %m (плÑÑ Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ дополнение, по ÑÑÑи пÑедÑÑавлÑÑÑее Ñобой подÑказкÑ)
ÑледÑÐµÑ Ð·Ð°Ð¿Ð¸ÑаÑÑ:
ÐÑновное: не ÑдалоÑÑ ÑоздаÑÑ ÑÐµÐ³Ð¼ÐµÐ½Ñ ÑазделÑемой памÑÑи: %m ÐодÑобное: ÐÑибка в ÑиÑÑемном вÑзове shmget(key=%d, size=%u, 0%o). ÐодÑказка: дополниÑелÑнÑй ÑекÑÑ
ÐбÑÑÑнение: когда оÑновное ÑообÑение доÑÑаÑоÑно кÑаÑкое, клиенÑÑ Ð¼Ð¾Ð³ÑÑ Ð²ÑделиÑÑ Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ меÑÑо на ÑкÑане в пÑедположении, ÑÑо одной ÑÑÑоки бÑÐ´ÐµÑ Ð´Ð¾ÑÑаÑоÑно. ÐодÑобное ÑообÑение и подÑказка могÑÑ Ð²ÑводиÑÑÑÑ Ð² Ñежиме дополниÑелÑнÑÑ Ñведений или, возможно, в ÑазвоÑаÑиваÑÑемÑÑ Ð¾ÐºÐ½Ðµ «оÑибка-подÑобноÑÑи». ÐÑоме Ñого, подÑобноÑÑи и подÑказки обÑÑно не запиÑÑваÑÑÑÑ Ð² жÑÑнал ÑеÑвеÑа Ð´Ð»Ñ ÑокÑаÑÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ обÑÑма. ÐеÑали ÑеализаÑии лÑÑÑе опÑÑкаÑÑ, Ñак как они вÑÑ Ñавно не бÑдÑÑ Ð¿Ð¾Ð½ÑÑÐ½Ñ Ð¿Ð¾Ð»ÑзоваÑелÑм.
51.3.2. ФоÑмаÑиÑование
Ðе полагайÑеÑÑ Ð½Ð° какое-либо опÑеделÑнное ÑоÑмаÑиÑование в ÑекÑÑе ÑообÑений. СледÑÐµÑ Ð¾Ð¶Ð¸Ð´Ð°ÑÑ, ÑÑо в клиенÑÑком инÑеÑÑейÑе и в жÑÑнале ÑеÑвеÑа длиннÑе ÑÑÑоки бÑдÑÑ Ð¿ÐµÑеноÑиÑÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ ÑиÑÑаÑии. РдлиннÑÑ ÑообÑениÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ обознаÑиÑÑ Ð¿ÑедполагаемÑе меÑÑа ÑазÑÑва абзаÑев Ñимволами новой ÑÑÑоки (\n). ÐавеÑÑаÑÑ ÑообÑение ÑÑим Ñимволом не нÑжно. Также не иÑполÑзÑйÑе ÑабÑлÑÑии или дÑÑгие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑоÑмаÑиÑованиÑ. (ÐÑи вÑводе конÑекÑÑа оÑибок авÑомаÑиÑеÑки добавлÑÑÑÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿ÐµÑевода ÑÑÑоки Ð´Ð»Ñ ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑовней конÑекÑÑа, напÑимеÑ, вÑзовов ÑÑнкÑий.)
ÐбÑÑÑнение: ÑообÑение не обÑзаÑелÑно бÑÐ´ÐµÑ Ð²ÑводиÑÑÑÑ Ð² инÑеÑÑейÑе ÑеÑминалÑного Ñипа. РгÑаÑиÑеÑÐºÐ¸Ñ Ð¸Ð½ÑеÑÑейÑÐ°Ñ Ð¸Ð»Ð¸ бÑаÑзеÑÐ°Ñ ÑÑи инÑÑÑÑкÑии ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² лÑÑÑем ÑлÑÑае игноÑиÑÑÑÑÑÑ.
51.3.3. Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ ÐºÐ°Ð²ÑÑек
Ð ÑекÑÑе на английÑком ÑзÑке везде, где ÑÑо ÑмеÑÑно, ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð²Ð¾Ð¹Ð½Ñе кавÑÑки. Ð ÑекÑÑе на дÑÑÐ³Ð¸Ñ ÑзÑÐºÐ°Ñ ÑледÑÐµÑ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±Ñазно иÑполÑзоваÑÑ ÑÐ¾Ñ Ñип кавÑÑек, коÑоÑÑй пÑинÑÑ Ð´Ð»Ñ Ð¿ÐµÑаÑи вÑвода дÑÑÐ³Ð¸Ñ Ð¿ÑогÑамм.
ÐбÑÑÑнение: вÑÐ±Ð¾Ñ Ð´Ð²Ð¾Ð¹Ð½ÑÑ ÐºÐ°Ð²ÑÑек вмеÑÑо апоÑÑÑоÑов неÑколÑко ÑвоеволÑнÑй, но ÐµÐ¼Ñ ÑейÑÐ°Ñ Ð¾ÑдаÑÑÑÑ Ð¿ÑедпоÑÑение. ÐекоÑоÑÑе ÑазÑабоÑÑики пÑедлагали вÑбиÑаÑÑ Ñип кавÑÑек в завиÑимоÑÑи Ð¾Ñ Ñипа обÑекÑа, ÑледÑÑ ÑоглаÑениÑм SQL (а именно, ÑÑÑоки заклÑÑаÑÑ Ð² апоÑÑÑоÑÑ, а иденÑиÑикаÑоÑÑ Ð² кавÑÑки). Ðо ÑÑо внÑÑÑеннÑÑ ÑÐµÑ Ð½Ð¸ÑеÑÐºÐ°Ñ Ð¾ÑобенноÑÑÑ ÑзÑка, о коÑоÑой многие полÑзоваÑели даже не догадÑваÑÑÑÑ; кÑоме Ñого, ÑÑо нелÑÐ·Ñ ÑаÑпÑоÑÑÑаниÑÑ Ð½Ð° дÑÑгие ÑÐ¸Ð¿Ñ ÑÑÑноÑÑей в кавÑÑÐºÐ°Ñ , не вÑегда можно пеÑевеÑÑи на дÑÑгие ÑзÑки и к ÑÐ¾Ð¼Ñ Ð¶Ðµ доволÑно беÑÑмÑÑленно.
51.3.4. ÐÑполÑзование кавÑÑек
ÐÑегда иÑполÑзÑйÑе кавÑÑки Ð´Ð»Ñ Ð·Ð°ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð¸Ð¼Ñн Ñайлов, задаваемÑÑ Ð¿Ð¾Ð»ÑзоваÑелем иденÑиÑикаÑоÑов и дÑÑÐ³Ð¸Ñ Ð¿ÐµÑеменнÑÑ , коÑоÑÑе могÑÑ ÑодеÑжаÑÑ Ñлова. Ðе заклÑÑайÑе в кавÑÑки пеÑеменнÑе, коÑоÑÑе никогда не бÑдÑÑ ÑодеÑжаÑÑ Ñлова (напÑимеÑ, имена опеÑаÑоÑов).
Ркоде ÑеÑвеÑа еÑÑÑ ÑÑнкÑии, коÑоÑÑе пÑи необÑ
одимоÑÑи Ñами заклÑÑаÑÑ Ð²ÑводимÑй ÑезÑлÑÑÐ°Ñ Ð² кавÑÑки (напÑимеÑ, format_type_be()). ÐополниÑелÑнÑе кавÑÑки вокÑÑг ÑезÑлÑÑаÑа ÑакиÑ
ÑÑнкÑий добавлÑÑÑ Ð½Ðµ ÑледÑеÑ.
ÐбÑÑÑнение: Ñ Ð¾Ð±ÑекÑов могÑÑ Ð±ÑÑÑ Ð¸Ð¼ÐµÐ½Ð°, ÑоздаÑÑие двÑÑмÑÑленноÑÑÑ, когда они поÑвлÑÑÑÑÑ Ð² ÑообÑении. ÐÑегда одинаково обознаÑайÑе, где наÑинаеÑÑÑ Ð¸ где заканÑиваеÑÑÑ Ð²ÑÑÑоенное имÑ. Ðо не загÑомождайÑе ÑообÑÐµÐ½Ð¸Ñ Ð½ÐµÐ½ÑжнÑми или повÑоÑнÑми знаками кавÑÑек.
51.3.5. ÐÑаммаÑика и пÑнкÑÑаÑиÑ
ÐÑавила Ð´Ð»Ñ Ð¾Ñновного ÑообÑÐµÐ½Ð¸Ñ Ð¸ дополниÑелÑного ÑообÑениÑ/подÑказки ÑазлиÑаÑÑÑÑ:
ÐÑновное ÑообÑение об оÑибке: не делайÑе пеÑвÑÑ Ð±ÑÐºÐ²Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹. Ðе завеÑÑайÑе ÑообÑение ÑоÑкой. Ðаже не дÑмайÑе о Ñом, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð²ÐµÑÑиÑÑ ÑообÑение воÑклиÑаÑелÑнÑм знаком!
ÐодÑобное ÑообÑение и подÑказка: пиÑиÑе полнÑе пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ завеÑÑайÑе каждое ÑоÑкой. ÐаÑинайÑе пеÑвое Ñлово пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð±Ð¾Ð»ÑÑой бÑквÑ. ÐобавлÑйÑе два пÑобела поÑле ÑоÑки, еÑли за одним пÑедложением ÑледÑÐµÑ Ð´ÑÑгое (Ð´Ð»Ñ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкого ÑекÑÑа; Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð¸ÑÑ Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ ÑзÑков).
СÑÑока Ñ ÐºÐ¾Ð½ÑекÑÑом оÑибки: не делайÑе пеÑвÑÑ Ð±ÑÐºÐ²Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹ и не завеÑÑайÑе ÑÑÑÐ¾ÐºÑ ÑоÑкой. СÑÑоки конÑекÑÑа обÑÑно не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿Ð¾Ð»Ð½Ñми пÑедложениÑми.
ÐбÑÑÑнение: пÑи оÑÑÑÑÑÑвии знаков пÑнкÑÑаÑии клиенÑÑким пÑиложениÑм пÑоÑе вÑÑавиÑÑ ÑообÑение в ÑамÑе ÑазнÑе гÑаммаÑиÑеÑкие конÑекÑÑÑ. ЧаÑÑо оÑновнÑе ÑообÑÐµÐ½Ð¸Ñ Ð²ÑÑ Ñавно не ÑвлÑÑÑÑÑ Ð³ÑаммаÑиÑеÑки полнÑми пÑедложениÑми. (ÐÑли ÑообÑение наÑÑолÑко длинное, ÑÑо Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ðµ одно пÑедложение, его ÑледÑÐµÑ Ð¿Ð¾Ð´ÐµÐ»Ð¸ÑÑ Ð½Ð° оÑновнÑÑ Ð¸ дополниÑелÑнÑÑ ÑаÑÑÑ.) Ðднако подÑобнÑе ÑообÑÐµÐ½Ð¸Ñ Ð¸ подÑказки по опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´Ð»Ð¸Ð½Ð½ÐµÐµ и могÑÑ ÑодеÑжаÑÑ Ð½ÐµÑколÑко пÑедложений. ÐдинообÑÐ°Ð·Ð¸Ñ Ñади, они Ð´Ð¾Ð»Ð¶Ð½Ñ ÑледоваÑÑ ÑÑÐ¸Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ пÑедложениÑ, даже еÑли пÑедложение вÑего одно.
51.3.6. ÐеÑÑ Ð½Ð¸Ð¹ ÑегиÑÑÑ Ð¸Ð»Ð¸ нижний ÑегиÑÑÑ
ÐиÑиÑе ÑообÑение в нижнем ÑегиÑÑÑе, вклÑÑÐ°Ñ Ð¿ÐµÑвÑÑ Ð±ÑÐºÐ²Ñ Ð¾Ñновного ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке. ÐÑполÑзÑйÑе веÑÑ Ð½Ð¸Ð¹ ÑегиÑÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ SQL и клÑÑевÑÑ Ñлов, еÑли они вÑводÑÑÑÑ Ð² ÑообÑении.
ÐбÑÑÑнение: Ñак пÑоÑе ÑделаÑÑ, ÑÑÐ¾Ð±Ñ Ð²ÑÑ Ð²ÑглÑдело единообÑазно, Ñак как некоÑоÑÑе ÑообÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»Ð½Ñми пÑедложениÑми, а дÑÑгие неÑ.
51.3.7. ÐзбегайÑе паÑÑивного залога
ÐÑполÑзÑйÑе акÑивнÑй залог. Ðогда еÑÑÑ Ð´ÐµÐ¹ÑÑвÑÑÑий ÑÑбÑекÑ, ÑоÑмÑлиÑÑйÑе полнÑе пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ («A не ÑдалоÑÑ ÑделаÑÑ B»). ÐÑполÑзÑйÑе ÑелегÑаÑнÑй ÑÑÐ¸Ð»Ñ Ð±ÐµÐ· ÑÑбÑекÑа, еÑли ÑÑбÑÐµÐºÑ â Ñама пÑогÑамма; не пиÑиÑе «Ñ» Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ пÑогÑаммÑ.
ÐбÑÑÑнение: пÑогÑамма â не Ñеловек. Ðе ÑоздавайÑе впеÑаÑление, ÑÑо ÑÑо не Ñак.
51.3.8. ÐаÑÑоÑÑее или пÑоÑедÑее вÑемÑ
ÐÑполÑзÑйÑе пÑоÑедÑее вÑемÑ, еÑли попÑÑка ÑделаÑÑ ÑÑо-Ñо не ÑдалаÑÑ, но Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑпеÑной в ÑледÑÑÑий Ñаз (возможно, поÑле ÑÑÑÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑой пÑоблемÑ). ÐÑполÑзÑйÑе наÑÑоÑÑее вÑемÑ, еÑли оÑибка, опÑеделÑнно, поÑÑоÑннаÑ.
ÐÑÑÑ Ð½ÐµÑÑивиалÑное ÑмÑÑловое ÑазлиÑие Ð¼ÐµÐ¶Ð´Ñ Ð¿ÑедложениÑми вида:
не ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ñайл "%s": %m
и:
нелÑÐ·Ñ Ð¾ÑкÑÑÑÑ Ñайл "%s"
ÐеÑвое ознаÑаеÑ, ÑÑо попÑÑка оÑкÑÑÑÑ Ñайл не ÑдалаÑÑ. СообÑение должно ÑообÑаÑÑ Ð¿ÑиÑинÑ, напÑимеÑ, «пеÑеполнение диÑка» или «Ñайл не ÑÑÑеÑÑвÑеÑ». ÐÑоÑедÑее вÑÐµÐ¼Ñ ÑмеÑÑно, поÑÐ¾Ð¼Ñ ÑÑо в ÑледÑÑÑий Ñаз диÑк Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ пеÑеполнен или запÑоÑеннÑй Ñайл бÑÐ´ÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½.
ÐÑоÑÐ°Ñ ÑоÑма показÑваеÑ, ÑÑо ÑÑнкÑионалÑноÑÑÑ Ð¾ÑкÑÑÑÐ¸Ñ Ñайла Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именем полноÑÑÑÑ Ð¾ÑÑÑÑÑÑвÑÐµÑ Ð² пÑогÑамме, либо ÑÑо невозможно в пÑинÑипе. ÐаÑÑоÑÑее вÑÐµÐ¼Ñ Ð² ÑÑом ÑлÑÑае ÑмеÑÑно, Ñак как ÑÑо ÑÑловие бÑÐ´ÐµÑ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð½ÐµÐ¾Ð¿ÑеделÑнное вÑемÑ.
ÐбÑÑÑнение: конеÑно, ÑÑедний полÑзоваÑÐµÐ»Ñ Ð½Ðµ ÑÐ¼Ð¾Ð¶ÐµÑ ÑделаÑÑ Ð³Ð»Ñбокие вÑводÑ, пÑоанализиÑовав ÑинÑакÑиÑеÑкое вÑемÑ, но еÑли ÑзÑк даÑÑ Ð½Ð°Ð¼ возможноÑÑÑ Ñакого вÑÑажениÑ, Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑ ÑÑо коÑÑекÑно.
51.3.9. Тип обÑекÑа
ЦиÑиÑÑÑ Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа, ÑказÑвайÑе Ñакже его Ñип.
ÐбÑÑÑнение: инаÑе никÑо не поймÑÑ, к ÑÐµÐ¼Ñ Ð¾ÑноÑиÑÑÑ Â«foo.bar.baz».
51.3.10. Скобки
ÐвадÑаÑнÑе Ñкобки Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑÑÑ ÑолÑко (1) в опиÑаниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ и обознаÑаÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑе аÑгÑменÑÑ, либо (2) Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа маÑÑива.
ÐбÑÑÑнение: вÑе дÑÑгие ваÑианÑÑ Ð¸Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ ÑвлÑÑÑÑÑ Ð¾Ð±ÑепÑинÑÑÑми и бÑдÑÑ Ð²Ð²Ð¾Ð´Ð¸ÑÑ Ð² заблÑждение.
51.3.11. СбоÑка ÑообÑений об оÑибкаÑ
Ðогда ÑообÑение вклÑÑÐ°ÐµÑ ÑекÑÑ, ÑгенеÑиÑованнÑй в дÑÑгом меÑÑе, внедÑÑйÑе его ÑледÑÑÑим обÑазом:
не ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ñайл %s: %m
ÐбÑÑÑнение: доволÑно Ñложно ÑÑеÑÑÑ Ð²Ñе возможнÑе ваÑианÑÑ Ð¾Ñибок, коÑоÑÑе бÑдÑÑ Ð²ÑÑавлÑÑÑÑÑ Ð² пÑедложение, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¾ пÑи ÑÑом оÑÑавалоÑÑ ÑкладнÑм, поÑÑÐ¾Ð¼Ñ ÑÑебÑеÑÑÑ ÐºÐ°ÐºÐ°Ñ-Ñо пÑнкÑÑаÑиÑ. ÐÑло пÑедложение заклÑÑаÑÑ Ð²ÐºÐ»ÑÑаемÑй ÑекÑÑ Ð² Ñкобки, но ÑÑо не вполне еÑÑеÑÑвенно, еÑли ÑÑÐ¾Ñ ÑекÑÑ ÑодеÑÐ¶Ð¸Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ важнÑÑ ÑаÑÑÑ ÑообÑениÑ, ÑÑо ÑаÑÑо Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑÑо.
51.3.12. ÐÑиÑÐ¸Ð½Ñ Ð¾Ñибок
СообÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²Ñегда ÑообÑаÑÑ Ð¾ пÑиÑине пÑоизоÑедÑей оÑибки. ÐапÑимеÑ:
ÐÐÐÐ¥Ð: не ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ñайл %s ÐУЧШÐ: не ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ñайл %s (оÑибка ввода/вÑвода)
ÐÑли пÑиÑина неизвеÑÑна, лÑÑÑе иÑпÑавиÑÑ ÐºÐ¾Ð´.
51.3.13. Ðмена ÑÑнкÑий
Ðе вклÑÑайÑе в ÑекÑÑ Ð¾Ñибки Ð¸Ð¼Ñ ÑÑнкÑии, в коÑоÑой возникла оÑибка. У Ð½Ð°Ñ ÐµÑÑÑ Ð´ÑÑгие Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ñ, позволÑÑÑие ÑзнаÑÑ ÐµÐ³Ð¾, когда ÑÑебÑеÑÑÑ, а Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑва полÑзоваÑелей ÑÑо беÑÐ¿Ð¾Ð»ÐµÐ·Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ. ÐÑли ÑекÑÑ Ð¾Ñибки оказÑваеÑÑÑ Ð±ÐµÑÑвÑзнÑм без имени ÑÑнкÑии, пеÑеÑÑазиÑÑйÑе его.
ÐÐÐÐ¥Ð: pg_atoi: оÑибка в "z": не ÑдалоÑÑ ÑазобÑаÑÑ "z" ÐУЧШÐ: невеÑное знаÑение Ð´Ð»Ñ Ñелого ÑиÑла: "z"
ÐзбегайÑе ÑÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¸Ð¼Ñн вÑзÑваемÑÑ ÑÑнкÑий; вмеÑÑо ÑÑого ÑкажиÑе, ÑÑо пÑÑаеÑÑÑ Ð´ÐµÐ»Ð°ÑÑ ÐºÐ¾Ð´:
ÐÐÐÐ¥Ð: оÑибка в open(): %m ÐУЧШÐ: не ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ñайл %s: %m
ÐÑли ÑÑо дейÑÑвиÑелÑно кажеÑÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñм, ÑпомÑниÑе ÑиÑÑемнÑй вÑзов в подÑобном ÑообÑении. (РнекоÑоÑÑÑ ÑлÑÑаÑÑ Ð² подÑобном ÑообÑении ÑÑÐ¾Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ ÑакÑиÑеÑкие знаÑениÑ, пеÑедаваемÑе ÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ Ð²ÑзовÑ.)
ÐбÑÑÑнение: полÑзоваÑели не знаÑÑ, ÑÑо делаÑÑ Ð²Ñе ÑÑи ÑÑнкÑии.
51.3.14. СколÑзкие Ñлова, коÑоÑÑÑ ÑледÑÐµÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ
Unable (ÐеÑпоÑобен). «Unable» â ÑÑо поÑÑи паÑÑивнÑй залог. ÐÑÑÑе иÑполÑзоваÑÑ Â«cannot» (нелÑзÑ) или «could not» (не ÑдалоÑÑ), в завиÑимоÑÑи Ð¾Ñ ÑиÑÑаÑии.
Bad (ÐÐ»Ð¾Ñ Ð¾Ðµ). СообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑÐ¸Ð±ÐºÐ°Ñ Ñипа «bad result» (Ð¿Ð»Ð¾Ñ Ð¾Ð¹ ÑезÑлÑÑаÑ) ÑÑÑдно воÑпÑинÑÑÑ Ð¾ÑмÑÑленно. ÐÑÑÑе напиÑаÑÑ, поÑÐµÐ¼Ñ ÑезÑлÑÑÐ°Ñ Â«Ð¿Ð»Ð¾Ñ Ð¾Ð¹Â», напÑимеÑ, «invalid format» (невеÑнÑй ÑоÑмаÑ).
Illegal (ÐелегалÑное). «Illegal» (нелегалÑно) â Ñо, ÑÑо наÑÑÑÐ°ÐµÑ Ð·Ð°ÐºÐ¾Ð½, вÑÑ Ð¾ÑÑалÑное можно назÑваÑÑ Â«invalid» (невеÑнÑм). ÐпÑÑÑ Ð¶Ðµ лÑÑÑе ÑказаÑÑ, поÑÐµÐ¼Ñ ÑÑо-Ñо невеÑное.
Unknown (ÐеизвеÑÑное). ÐоÑÑаÑайÑеÑÑ Ð¸ÑклÑÑиÑÑ Â«unknown» (неизвеÑÑное). ÐзглÑниÑе на ÑообÑение: «error: unknown response» (оÑибка: неизвеÑÑнÑй оÑвеÑ). ÐÑли Ð²Ñ Ð½Ðµ знаеÑе, ÑÑо за оÑÐ²ÐµÑ Ð¿Ð¾Ð»ÑÑен, как Ð²Ñ Ð¿Ð¾Ð½Ñли, ÑÑо он оÑибоÑнÑй? ÐмеÑÑо ÑÑого ÑаÑÑо лÑÑÑе ÑказаÑÑ Â«unrecognized» (неÑаÑпознаннÑй). Также обÑзаÑелÑно добавÑÑе знаÑение, коÑоÑое не бÑло воÑпÑинÑÑо.
ÐÐÐÐ¥Ð: неизвеÑÑнÑй Ñип Ñзла ÐУЧШÐ: неÑаÑпознаннÑй Ñип Ñзла: 42
«Ðе найдено» или «не ÑÑÑеÑÑвÑеÑ». ÐÑли пÑогÑамма вÑполнÑÐµÑ Ð¿Ð¾Ð¸Ñк ÑеÑÑÑÑа, иÑполÑзÑÑ Ð½ÐµÑÑивиалÑнÑй алгоÑиÑм (напÑимеÑ, поиÑк по пÑÑи), и ÑÑÐ¾Ñ Ð°Ð»Ð³Ð¾ÑиÑм не ÑÑабаÑÑваеÑ, лÑÑÑе ÑеÑÑно ÑказаÑÑ, ÑÑо пÑогÑамма не Ñмогла «найÑи» ÑеÑÑÑÑ. С дÑÑгой ÑÑоÑонÑ, еÑли ожидаемое ÑаÑположение ÑеÑÑÑÑа ÑоÑно извеÑÑно, но пÑогÑамма не Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑаÑиÑÑÑÑ Ðº немÑ, ÑкажиÑе, ÑÑо ÑÑÐ¾Ñ ÑеÑÑÑÑ Ð½Ðµ «ÑÑÑеÑÑвÑеÑ». ФоÑмÑлиÑовка Ñ Ð³Ð»Ð°Ð³Ð¾Ð»Ð¾Ð¼ «найÑи» в данном ÑлÑÑае звÑÑÐ¸Ñ Ñлабо и заÑÑÑднÑÐµÑ Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ.
РазÑеÑено, Ð¼Ð¾Ð³Ñ Ð¸Ð»Ð¸ возможно. «May» (ÑазÑеÑено) подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ ÑазÑеÑение (напÑимеÑ, «Ðам ÑазÑеÑено воÑполÑзоваÑÑÑÑ Ð¼Ð¾Ð¸Ð¼Ð¸ гÑаблÑми.») и ÑÑÐ¾Ð¼Ñ Ð¿ÑакÑиÑеÑки Ð½ÐµÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² докÑменÑаÑии или ÑообÑениÑÑ Ð¾Ð± оÑÐ¸Ð±ÐºÐ°Ñ . «Can» (могÑ) подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ ÑпоÑобноÑÑÑ (напÑимеÑ, «Я Ð¼Ð¾Ð³Ñ Ð¿Ð¾Ð´Ð½ÑÑÑ ÑÑо бÑевно.»), а «might» (возможно) подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ (напÑимеÑ, Â«Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶ÐµÐ½ дождÑ.»). ÐÑполÑзование Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑего Ñлова пÑоÑÑнÑÐµÑ Ð·Ð½Ð°Ñение и облегÑÐ°ÐµÑ Ð¿ÐµÑевод.
СокÑаÑениÑ. ÐзбегайÑе ÑокÑаÑений, напÑÐ¸Ð¼ÐµÑ Â«can't»; вмеÑÑо ÑÑо напиÑиÑе «cannot».
51.3.15. ÐÑавилÑное напиÑание
ÐиÑиÑе Ñлова полноÑÑÑÑ. ÐапÑимеÑ, избегайÑе (в английÑком):
spec
stats
parens
auth
xact
ÐбÑÑÑнение: Ñак ÑообÑÐµÐ½Ð¸Ñ Ð±ÑдÑÑ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±ÑазнÑми.
51.3.16. ÐокализаÑиÑ
ÐомниÑе, ÑÑо ÑекÑÑ ÑообÑений должен пеÑеводиÑÑÑÑ Ð½Ð° дÑÑгие ÑзÑки. СледÑйÑе ÑовеÑам, пÑиведÑннÑм в ÐодÑазделе 52.2.2, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð»Ð¸Ñне не ÑÑложнÑÑÑ Ð¶Ð¸Ð·Ð½Ñ Ð¿ÐµÑеводÑикам.