[{"data":1,"prerenderedAt":397},["ShallowReactive",2],{"term-e\u002Ferror-handling":3,"related-e\u002Ferror-handling":379},{"id":4,"title":5,"acronym":6,"body":7,"category":359,"description":360,"difficulty":361,"extension":362,"letter":363,"meta":364,"navigation":365,"path":366,"related":367,"seo":373,"sitemap":374,"stem":377,"subcategory":6,"__hash__":378},"terms\u002Fterms\u002Fe\u002Ferror-handling.md","Error Handling",null,{"type":8,"value":9,"toc":353},"minimark",[10,15,19,23,26,30,342,346,349],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"Error handling is the art of planning for things to go wrong and dealing with them gracefully instead of letting everything catch fire. Good error handling means your app shows a friendly message instead of crashing. Bad error handling means users see raw error dumps or, worse, a white blank screen.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"Error handling encompasses all strategies for detecting, catching, and recovering from errors at runtime. It includes try\u002Fcatch blocks, error boundary components (React), promise rejection handlers, global error handlers (process.on('uncaughtException')), input validation, and meaningful error messages for debugging. Good error handling distinguishes between expected errors (validation failures) and unexpected errors (bugs).",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Layered error handling in an Express API:\napp.get('\u002Fuser\u002F:id', async (req, res) => {\n  try {\n    const user = await db.findUser(req.params.id);\n    if (!user) return res.status(404).json({ error: 'Not found' });\n    res.json(user);\n  } catch (err) {\n    console.error(err); \u002F\u002F log for devs\n    res.status(500).json({ error: 'Internal server error' }); \u002F\u002F safe for users\n  }\n});\n","javascript","",[38,39,40,49,104,113,156,222,240,259,282,326,332],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sHwdD","\u002F\u002F Layered error handling in an Express API:\n",[41,50,52,56,60,64,67,70,74,76,79,83,86,90,92,95,98,101],{"class":43,"line":51},2,[41,53,55],{"class":54},"sTEyZ","app",[41,57,59],{"class":58},"sMK4o",".",[41,61,63],{"class":62},"s2Zo4","get",[41,65,66],{"class":54},"(",[41,68,69],{"class":58},"'",[41,71,73],{"class":72},"sfazB","\u002Fuser\u002F:id",[41,75,69],{"class":58},[41,77,78],{"class":58},",",[41,80,82],{"class":81},"spNyl"," async",[41,84,85],{"class":58}," (",[41,87,89],{"class":88},"sHdIc","req",[41,91,78],{"class":58},[41,93,94],{"class":88}," res",[41,96,97],{"class":58},")",[41,99,100],{"class":81}," =>",[41,102,103],{"class":58}," {\n",[41,105,107,111],{"class":43,"line":106},3,[41,108,110],{"class":109},"s7zQu","  try",[41,112,103],{"class":58},[41,114,116,119,122,125,128,131,133,136,139,141,143,146,148,151,153],{"class":43,"line":115},4,[41,117,118],{"class":81},"    const",[41,120,121],{"class":54}," user",[41,123,124],{"class":58}," =",[41,126,127],{"class":109}," await",[41,129,130],{"class":54}," db",[41,132,59],{"class":58},[41,134,135],{"class":62},"findUser",[41,137,66],{"class":138},"swJcz",[41,140,89],{"class":54},[41,142,59],{"class":58},[41,144,145],{"class":54},"params",[41,147,59],{"class":58},[41,149,150],{"class":54},"id",[41,152,97],{"class":138},[41,154,155],{"class":58},";\n",[41,157,159,162,164,167,170,173,176,178,180,183,185,189,191,193,196,198,201,204,207,210,213,215,218,220],{"class":43,"line":158},5,[41,160,161],{"class":109},"    if",[41,163,85],{"class":138},[41,165,166],{"class":58},"!",[41,168,169],{"class":54},"user",[41,171,172],{"class":138},") ",[41,174,175],{"class":109},"return",[41,177,94],{"class":54},[41,179,59],{"class":58},[41,181,182],{"class":62},"status",[41,184,66],{"class":138},[41,186,188],{"class":187},"sbssI","404",[41,190,97],{"class":138},[41,192,59],{"class":58},[41,194,195],{"class":62},"json",[41,197,66],{"class":138},[41,199,200],{"class":58},"{",[41,202,203],{"class":138}," error",[41,205,206],{"class":58},":",[41,208,209],{"class":58}," '",[41,211,212],{"class":72},"Not found",[41,214,69],{"class":58},[41,216,217],{"class":58}," }",[41,219,97],{"class":138},[41,221,155],{"class":58},[41,223,225,228,230,232,234,236,238],{"class":43,"line":224},6,[41,226,227],{"class":54},"    res",[41,229,59],{"class":58},[41,231,195],{"class":62},[41,233,66],{"class":138},[41,235,169],{"class":54},[41,237,97],{"class":138},[41,239,155],{"class":58},[41,241,243,246,249,251,254,256],{"class":43,"line":242},7,[41,244,245],{"class":58},"  }",[41,247,248],{"class":109}," catch",[41,250,85],{"class":138},[41,252,253],{"class":54},"err",[41,255,172],{"class":138},[41,257,258],{"class":58},"{\n",[41,260,262,265,267,270,272,274,276,279],{"class":43,"line":261},8,[41,263,264],{"class":54},"    console",[41,266,59],{"class":58},[41,268,269],{"class":62},"error",[41,271,66],{"class":138},[41,273,253],{"class":54},[41,275,97],{"class":138},[41,277,278],{"class":58},";",[41,280,281],{"class":47}," \u002F\u002F log for devs\n",[41,283,285,287,289,291,293,296,298,300,302,304,306,308,310,312,315,317,319,321,323],{"class":43,"line":284},9,[41,286,227],{"class":54},[41,288,59],{"class":58},[41,290,182],{"class":62},[41,292,66],{"class":138},[41,294,295],{"class":187},"500",[41,297,97],{"class":138},[41,299,59],{"class":58},[41,301,195],{"class":62},[41,303,66],{"class":138},[41,305,200],{"class":58},[41,307,203],{"class":138},[41,309,206],{"class":58},[41,311,209],{"class":58},[41,313,314],{"class":72},"Internal server error",[41,316,69],{"class":58},[41,318,217],{"class":58},[41,320,97],{"class":138},[41,322,278],{"class":58},[41,324,325],{"class":47}," \u002F\u002F safe for users\n",[41,327,329],{"class":43,"line":328},10,[41,330,331],{"class":58},"  }\n",[41,333,335,338,340],{"class":43,"line":334},11,[41,336,337],{"class":58},"}",[41,339,97],{"class":54},[41,341,155],{"class":58},[11,343,345],{"id":344},"when-youll-hear-this","When You'll Hear This",[16,347,348],{},"\"The error handling needs work — it's showing raw stack traces to users.\" \u002F \"Add proper error handling before we ship this.\"",[350,351,352],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":51,"depth":51,"links":354},[355,356,357,358],{"id":13,"depth":51,"text":14},{"id":21,"depth":51,"text":22},{"id":28,"depth":51,"text":29},{"id":344,"depth":51,"text":345},"general","Error handling is the art of planning for things to go wrong and dealing with them gracefully instead of letting everything catch fire.","intermediate","md","e",{},true,"\u002Fterms\u002Fe\u002Ferror-handling",[368,369,370,371,372],"Try\u002FCatch","Exception","Logging","Bug","Validation",{"title":5,"description":360},{"changefreq":375,"priority":376},"weekly",0.7,"terms\u002Fe\u002Ferror-handling","29rpDoIH_KZtCgtWFrwgiaLaV-70QmVMjqGf12niHUQ",[380,384,387,390,393],{"title":371,"path":381,"acronym":6,"category":359,"difficulty":382,"description":383},"\u002Fterms\u002Fb\u002Fbug","beginner","A bug is anything in your code that makes it behave wrong.",{"title":369,"path":385,"acronym":6,"category":359,"difficulty":361,"description":386},"\u002Fterms\u002Fe\u002Fexception","An exception is a special kind of error that 'throws' itself up through your code like a hot potato, looking for someone to catch it.",{"title":370,"path":388,"acronym":6,"category":359,"difficulty":382,"description":389},"\u002Fterms\u002Fl\u002Flogging","Logging is writing a diary for your program.",{"title":368,"path":391,"acronym":6,"category":359,"difficulty":382,"description":392},"\u002Fterms\u002Ft\u002Ftry-catch","Try\u002Fcatch is your safety net. You put risky code in the 'try' box, and if it blows up, the 'catch' box catches the explosion and handles it gracefully inst...",{"title":372,"path":394,"acronym":6,"category":395,"difficulty":382,"description":396},"\u002Fterms\u002Fv\u002Fvalidation","backend","Validation is your backend's bouncer. Before any data gets into the database, the bouncer checks it: 'Is this email actually an email?",1776518277650]