Прескочи на главни садржај
Основе Питхона2026-07-29 · 9 мин читања

Руковање Питхон грешкама: покушајте / осим / елсе / коначно 2026

Руковање грешкама одваја "код који ради на вашој машини" од "кода који преживи производњу". Питхон-ов „покушај / осим“ изгледа једноставно, али пун облик са четири кључне речи — „покушај / осим / елсе / коначно“ — кодира изненађујућу количину структуре коју већина туторијала прескаче.

Овај водич покрива: шта свака кључна реч заправо значи, шест образаца које ћете видети у свакој позадинској кодној бази, када да дефинишете сопствене изузетке и три анти-обрасца која дозвољавају да грешке прођу поред ваших тестова.

Четири кључне речи, тачно

▶ PYTHONeditable · runs in your browser

Клаузула елсе се недовољно користи. Каже „овај следећи део зависи од успеха покушаја, али не желим да га штити исто осим“. То је право место за наставак срећног пута — стављањем у „покушај“ случајно се хватају неповезани изузеци од брод(резултат).

Шест образаца

1. Покушајте поново на пролазном неуспеху

▶ PYTHONeditable · runs in your browser

Правило: покушајте поново САМО на пролазним грешкама (мрежа, временско ограничење, 429, 503). Никада не покушавајте поново са ВалуеЕррор, КеиЕррор, ТипеЕррор — то су грешке кода, а поновни покушај само покреће грешку три пута.

2. Чувајте са елсе

▶ PYTHONeditable · runs in your browser

елсе гарантује да је датотека успешно отворена И обухвата чишћење са витх. Напомена: процесс() може подићи ВалуеЕррор — то ће се ширити, НЕЋЕ бити ухваћено од стране осим ФилеНотФоундЕррор.

3. Чишћење помоћу коначно (пре него што је постојало витх)

▶ PYTHONeditable · runs in your browser

У модерном коду бисте користили витх дб.цоннецт() као цонн: — витх је шећер у односу на покушај / коначно за уобичајени случај чишћења. Посегните за експлицитним „коначно“ само када ресурс не подржава протокол менаџера контекста.

4. Поновно подизање са додатним контекстом

▶ PYTHONeditable · runs in your browser

подигните НевЕкцептион(...) из е ланаца оригиналног изузетка на нови тако да праћење показује ОБА. Никада не пишите раисе НевЕкцептион(стр(е)) — то одбацује оригинално праћење.

5. Ухватите најужи изузетак који можете

▶ PYTHONeditable · runs in your browser

Правило: што је ужи осим, то боље. Ако не знате шта процес може да покрене, покрените га и сазнајте. осим изузетка: је мирис кода у 90% времена.

6. раисе унутар осим — ре-раисе чисто

▶ PYTHONeditable · runs in your browser

Голо повишење чува оригинални трацебацк нетакнутим. Никад не подижите е (Питхон 3 је паметан у вези са тим, али голо повишење је идиоматски облик).

Прилагођени изузеци — када се исплати

Дефинишите сопствену класу изузетака када:

1. Позиваоци морају посебно да осим МиЕррор: (тј. имате АПИ који се може позвати и корисници морају да се гранају према типу грешке).

2. Ваша библиотека/услуга изазива више повезаних грешака које деле контекст.

▶ PYTHONeditable · runs in your browser

Сада позиваоци могу ухватити широко (осим ПаиментЕррор) или уско (осим ЦардДецлинедЕррор). Структурирани атрибути на изузетку (е.цард_ласт4) омогућавају руковаоцима грешкама да изграде користан кориснички интерфејс без рашчлањивања порука о изузетцима.

Против шаблона: дефинисање прилагођеног изузетка који постоји само да би се покренуо једном и никада није ухваћен. То је само подићи ВалуеЕррор("..."). Прилагођени изузеци зарађују на тежини тиме што су ухваћени.

Три анти-обрасци која скривају грешке

Анти-шаблон 1: Голи осим

▶ PYTHONeditable · runs in your browser

Голи осим хвата сигнале који би требало да изађу из програма (Цтрл-Ц, сис.екит, МемориЕррор). Никад не пиши ово. Ако заиста желите да ухватите сваки изузетак који није фаталан, користите осим изузетка: — који ЈОШ УВЕК хвата превише, али барем поштује Цтрл-Ц.

Анти-шаблон 2: Утишавање без евидентирања

▶ PYTHONeditable · runs in your browser

Сваки ухваћени изузетак треба или да се обради (са одређеним резервним) или да се евидентира. пасс ин ан осим је грешка у успореном снимку — изгледа да код ради док тихо одбацује податке.

▶ PYTHONeditable · runs in your browser

Анти-шаблон 3: осим изузетка: око свега

▶ PYTHONeditable · runs in your browser

Проблем: ако је стрипе.цхарге успео, али сенд_рецеипт није успео, клијенту је наплаћено А ви сте прогутали грешку. осим покрива четири различита начина рада и не можете их разликовати.

Поправка: сузите опсег покушаја + гранајте осим по граници модула.

▶ PYTHONeditable · runs in your browser

Сваки покушај покрива ЈЕДНУ операцију. Сваки осим зна шта да ради у вези са ОВОМ специфичном грешком. То је руковање грешкама на нивоу производње.


Добро руковање грешкама је више дизајн него синтакса. покушај / осим / остало / коначно вам даје алате; дисциплина је одабир правог осим типа, најужи могући опсег покушаја и никада не утишавање грешака које не разумете.

Следећи корак: Фоундатионс трацк има 10 лекција о руковању изузетцима, прилагођеним изузецима и наредби витх — са правим Питхон-ом који ради у вашем претраживачу.

Јесте ли спремни да пробате?

15 бесплатне лекције након бесплатне пријаве — без картице. Пробајте платформу, а затим одлучите.

Почните бесплатно →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.