try-catch使用技巧:详解各言异常函数捕获的最佳实践
涓€銆佷唬鐮佹€诲穿婧冿紵鍙兘鏄綘娌$敤濂絫ry-catch锛?/h3>
"涓轰粈涔堟垜鍐欑殑浠g爜鎬绘槸闂€€锛?杩欐槸涓嶆槸浣犲湪娣卞璋冭瘯鏃剁殑鐏甸瓊鎷烽棶锛熷叾瀹炲晩锛屸€?strong>鈥?0%鐨勭▼搴忓穿婧冮兘婧愪簬寮傚父娌″鐞嗗ソ鈥?/strong>鈥嬨€備粖澶╁挶浠氨鏉ュ敔鍞犺繖涓▼搴忓憳淇濆懡绁炲櫒鈥斺€攖ry-catch銆傚埆鐪嬪畠璇硶绠€鍗曪紝閲岄潰鍙棌鐫€澶у闂紒
涓句釜鏍楀瓙馃尠锛氫綘璁╃敤鎴疯緭鍏ュ勾榫勶紝缁撴灉浜哄濉簡涓?鍗佸叓宀?銆傝繖鏃跺€欒鏄笉鍋氬紓甯稿鐞嗭紝绋嬪簭褰撳満灏辩粰浣犺〃婕斾釜鍘熷湴鍗囧ぉ銆備絾瑕佹槸鐢╰ry-catch鍖呬綇杈撳叆浠g爜锛屽氨鑳戒紭闆呭湴鎻愰啋鐢ㄦ埛锛?鑰侀搧锛屾暟瀛椾簡瑙d竴涓嬶紵"
浜屻€丣ava锛氬己杩棁鎮h€呯殑绂忛煶
Java鐨勫紓甯稿鐞嗗氨鍍忎釜鎿嶅績鐨勮€佸瀛愶紝闈炲緱璁╀綘鎶婂彲鑳藉嚭閿欑殑鍦版柟閮借€冭檻鍒般€備笉杩囪繖绉嶄弗鏍间篃鏈夊ソ澶勨€斺€斺€?strong>鈥嬫柊鎵嬩笉瀹规槗婕忔帀閲嶈閿欒鈥?/strong>鈥嬨€?/p>
鈥?strong>鈥嬪繀鏉€鎶€1锛氱簿鍑嗘崟鑾封€?/strong>鈥?/p>
java澶嶅埗try { FileInputStream fis = new FileInputStream("鏃ヨ.txt"); } catch (FileNotFoundException e) { System.out.println("鍏勫紵锛屼綘鏂囦欢鍛紵"); } catch (SecurityException e) { System.out.println("娌℃潈闄愮湅浜哄鏃ヨ锛?); }
鏁查粦鏉匡紒鍗冧竾鍒浘鐪佷簨鐩存帴catch(Exception)锛岃繖灏卞ソ姣旀妸鎰熷啋鑽綋涓囪兘鑽悆锛岀梾娌℃不濂借繕鑰借浜嬪効銆?/p>
鈥?strong>鈥嬪繀鏉€鎶€2锛氳祫婧愬ぇ绠″鈥?/strong>鈥?/p>
java澶嶅埗// 鑰佸徃鏈哄啓娉?/span> try (Connection conn = DriverManager.getConnection(url)) { // 鎿嶄綔鏁版嵁搴?/span> } catch (SQLException e) { e.printStackTrace(); }
鐢╰ry-with-resources鑷姩鍏宠祫婧愶紝濡堝鍐嶄篃涓嶇敤鎷呭績鎴戝繕璁板叧鏁版嵁搴撹繛鎺ヤ簡锛?/p>
涓夈€丳ython锛氫經绯婚潚骞寸殑浼橀泤涔嬮亾
Python鐨勫紓甯稿鐞嗗氨鍍忓お鏋侊紝鏌斾腑甯﹀垰銆備絾鍒瀹冪殑绠€娲侀獥浜嗭紝鐢ㄥソ浜嗙収鏍疯兘鍥涗袱鎷ㄥ崈鏂ゃ€?/p>
鈥?strong>鈥嬬鎰忎笁杩炴嫑锛氣€?/strong>鈥?/p>
- 鈥?strong>鈥嬬簿鍑嗙嫏鍑婚敊璇€?/strong>鈥嬶細
python澶嶅埗try: age = int(input("骞撮緞锛?)) except ValueError: print("浜诧紝杩欓噷瑕佸~鏁板瓧鍝")
- 鈥?strong>鈥嬩竾鑳戒繚搴曗€?/strong>鈥嬶細
python澶嶅埗try: # 鍗遍櫓鎿嶄綔 except: print("鍑哄ぇ浜嬩簡锛佸揩璁版棩蹇楋紒") raise # 鎶婇攨鐢╃粰涓婂眰
- 鈥?strong>鈥嬪畬缇庢敹灏锯€?/strong>鈥嬶細
python澶嶅埗file = open("鎯呬功.txt", "r") try: content = file.read() finally: file.close() # 灏辩畻琛ㄧ櫧澶辫触涔熻鏀舵嬀鐜板満
娉ㄦ剰鍟︼紒Python鐨勫紓甯稿彲浠ュ綋杩斿洖鍊肩敤锛屼絾鍒互鐢紝瑕佷笉鐒朵唬鐮佸氨鎴愭墦鍦伴紶娓告垙浜嗐€?/p>
鍥涖€丣avaScript锛氬紓姝ユ垬澹殑闃插脊琛?/h3>
JS鐨勫紓姝ョ壒鎬ц寮傚父澶勭悊鍙樺緱鍍忚拷濂虫湅鍙嬧€斺€斾綘姘歌繙涓嶇煡閬撳ス浠€涔堟椂鍊欎細鐢熸皵銆傚ソ鍦ㄦ湁杩欎簺濡欐嫑锛?/p>
鈥?strong>鈥嬮槻宕╀笁浠跺锛氣€?/strong>鈥?/p>
- 鈥?strong>鈥嬪悓姝ラ櫡闃扁€?/strong>鈥嬶細
javascript澶嶅埗try { JSON.parse('{涔辩爜}'); } catch (e) { console.log("杩橨SON鏄枬澶氫簡鍐欑殑鍚э紵"); }
- 鈥?strong>鈥嬪紓姝ョ鎶€鈥?/strong>鈥嬶細
javascript澶嶅埗fetch('琛ㄧ櫧淇?txt') .then(response => response.text()) .catch(error => console.log("缃戠粶寮€灏忓樊浜?));
- 鈥?strong>鈥嬬粓鏋佷繚鍛解€?/strong>鈥嬶細
window澶嶅埗console.log(`绗?{line}琛屾悶浜嬫儏锛?{msg}`); }``` 璁颁綇锛佸埆鍦ㄥ紓姝ュ洖璋冮噷鐢?span>try-catch锛屽氨鍍忓埆鍦ㄥ井淇′笂鑱婂垎鎵嬶紝鏍规湰鎶撲笉浣忛噸鐐广€俒1,7](@ref) --- ### 浜斻€丳HP锛氭鏋跺厷鐨勬噿浜虹绫?/span> PHP鐨勫紓甯稿鐞嗗氨鍍忓悆鐏攨鈥斺€斿簳鏂欙紙妗嗘灦锛夐€夊緱濂斤紝娑暐閮介銆? **妗嗘灦绂忓埄灞€锛?* ```php // 鍘熺敓鍐欐硶 try { $file = fopen("瀛樻.txt", "r"); } catch (Exception $e) { echo "閽卞寘涓簡锛?; } // Laravel鐜╁鐨勯獨鎿嶄綔 App::error(function(Exception $e) { Log::error($e->getMessage()); return Response::json(['error' => '鏈嶅姟鍣ㄥ幓鐏槦浜?]); });
妗嗘灦鑷甫鐨勫紓甯稿鐞嗗氨鍍忚嚜鍔ㄦ尅姹借溅锛屼絾鑰佸徃鏈洪兘鐭ラ亾锛岃鎵嬪姩鐨勬椂鍊欒繕寰楁墜鍔ㄣ€?/p>
鍏€侀伩鍧戞寚鍗楋細杩欎簺楠氭搷浣滀細瑕佸懡锛?/h3>
- 鈥?strong>鈥嬮粦娲炴崟鑾封€?/strong>鈥嬶細
catch{}
閲屽暐涔熶笉鍐欙紝灏卞儚鐢熺梾涓嶇湅鍖荤敓锛岃繜鏃╁嚭澶т簨
- 鈥?strong>鈥嬪紓甯稿綋IF鐢ㄢ€?/strong>鈥嬶細鐢ㄦ姏寮傚父浠f浛鏉′欢鍒ゆ柇锛孋PU浼氬摥缁欎綘鐪?/li>
- 鈥?strong>鈥嬫棩蹇楁墦姘存紓鈥?/strong>鈥嬶細涓嶈褰曞紓甯稿爢鏍堬紝灏卞儚鐮存涓嶇暀绾跨储
- 鈥?strong>鈥嬭法灞傜敥閿呪€?/strong>鈥嬶細搴曞眰寮傚父鐩存帴鎶涚粰鐢ㄦ埛锛岀敤鎴蜂綋楠岀洿鎺ヨ礋鍒?/li>
catch{}
閲屽暐涔熶笉鍐欙紝灏卞儚鐢熺梾涓嶇湅鍖荤敓锛岃繜鏃╁嚭澶т簨涓句釜鍙嶉潰鏁欐潗锛?/p>
java澶嶅埗try { user.setAge(-18); } catch (Exception e) { // 杩欓噷绌虹潃绛夎繃骞达紵 }
杩欑鍐欐硶锛屼經绁栫湅浜嗛兘鎯虫墦浜猴紒
涓冦€佽瑷€澶т贡鏂楋細try-catch鍝寮猴紵
璇█ | 浼樼偣 | 鍧戠偣 | 閫傜敤鍦烘櫙 |
---|---|---|---|
鈥?strong>鈥婮ava鈥?/strong>鈥?/td> | 寮哄埗妫€鏌ワ紝浠g爜涓ヨ皑 | 璇硶鍟板棪 | 閲戣瀺/鐢靛晢绯荤粺 |
鈥?strong>鈥婸ython鈥?/strong>鈥?/td> | 绠€娲佺伒娲?/td> | 鎬ц兘鎹熻€楀ぇ | 鏁版嵁鍒嗘瀽/鐖櫕 |
鈥?strong>鈥婮S鈥?/strong>鈥?/td> | 寮傛澶勭悊寮?/td> | 鍥炶皟鍦扮嫳 | 鍓嶇/Node.js |
鈥?strong>鈥婸HP鈥?/strong>鈥?/td> | 妗嗘灦闆嗘垚搴﹂珮 | 鍘嗗彶鍖呰⒈閲?/td> | Web寮€鍙?/td> |
杩欏紶琛ㄥ缓璁敹钘忥紝閫夎瑷€灏卞儚閫夊璞★紝鍚堥€傛渶閲嶈锛?/p>
鍏€佷釜浜虹璐э細寮傚父澶勭悊鐨勫摬瀛?/h3>
骞蹭簡杩欎箞澶氬勾寮€鍙戯紝鎴戝彂鐜板紓甯稿鐞嗗氨鍍忎汉鐢熲€斺€斺€?strong>鈥嬮噸瑕佺殑涓嶆槸姘歌繙涓嶅嚭閿欙紝鑰屾槸鐭ラ亾鎬庝箞浼橀泤鍦版敹鎷剧儌鎽婂瓙鈥?/strong>鈥嬨€傛湁浜涘洟闃熶负浜嗚拷姹傞浂寮傚父锛屾妸浠g爜鍐欐垚閾佹《闃碉紝缁撴灉鍙嶈€岄檷浣庝簡鍙淮鎶ゆ€с€傝浣忚繖涓変釜搴︼細
- 鈥?strong>鈥嬮绮掑害鈥?/strong>鈥嬶細鍍忕背鍏舵灄澶у帹鍒囪彍锛岃绮楀垯绮楋紝璇ョ粏鍒欑粏
- 鈥?strong>鈥嬪彲瑙佸害鈥?/strong>鈥嬶細閿欒鎻愮ず瑕佸儚瀵艰埅璇煶锛屾棦涓撲笟鍙堜汉璇?/li>
- 鈥?strong>鈥嬪蹇嶅害鈥?/strong>鈥嬶細闈炲叧閿紓甯歌瀛︿細鏂垗绂?/li>
鏈€鍚庨€佸ぇ瀹朵竴鍙ヨ瘽锛氣€?strong>鈥嬪ソ鐨勫紓甯稿鐞嗭紝鏄粰绋嬪簭涔颁繚闄╋紝鑰屼笉鏄拷姹傞暱鐢熶笉鑰佲€?/strong>鈥嬨€備笌鍏舵垬鎴樺參鍏㈤槻閿欒锛屼笉濡傚ぇ澶ф柟鏂瑰啓澶勭悊锛?/p>