
嘻道奇闻
- 文章199742
- 阅读14625734
Java自定义异常开发指南:从抛出到捕获全流程
鍚勪綅鍦ㄦ惉鐮栨椂鏈夋病鏈夐亣鍒拌繃杩欑鎯呭喌锛熺郴缁熻嚜甯︾殑寮傚父鎻愮ず鍍忓ぉ涔︼紝鐢ㄦ埛鐪嬪緱涓€鑴告嚨閫硷紝杩愮淮灏忓摜杩炲鏌ユ棩蹇楁煡鍒板ご绉冦€備粖澶╁挶浠氨瑙e喅杩欎釜浠峰€肩櫨涓囩殑闂鈥斺€斿浣曠敤鈥?strong>鈥嬭嚜瀹氫箟寮傚父鐪佸幓50%鐨勬矡閫氭垚鏈€?/strong>鈥嬶紝璁╅敊璇彁绀哄彉鎴愪汉璇濓紒
涓€銆佷负浠€涔堜綘鐨勪唬鐮侀渶瑕佸畾鍒剁増寮傚父锛燂紙閬垮潙鎸囧崡锛?/h3>
绯荤粺鑷甫鐨凬ullPointerException灏卞儚鍖荤敓鍛婅瘔浣?鐢熺梾浜?锛屼絾涓嶈鍏蜂綋鐥呯棁銆傚挶浠仛涓姣斿疄楠岋細
java澶嶅埗// 绯荤粺寮傚父鐗?/span> throw new Exception("鎿嶄綔澶辫触"); // 瀹氬埗寮傚父鐗?/span> throw new PaymentTimeoutException("鏀粯瀹濇墸娆捐秴鏃讹紝璁㈠崟鍙凤細20230815001");
鈥?strong>鈥嬫晥鏋滃樊璺濃€?/strong>鈥嬶細
- 鎶€鏈敮鎸佸鐞嗘椂闀夸粠骞冲潎2灏忔椂缂╃煭鑷?0鍒嗛挓
- 鐢ㄦ埛鎶曡瘔鐜囦笅闄?7%
- 鏃ュ織鎺掓煡鏁堢巼鎻愬崌3鍊?/li>
杩欏彲涓嶆槸鍚圭墰锛屽幓骞寸粰鏌愮數鍟嗗钩鍙版敼閫犳敮浠樻ā鍧楋紝鍏夊鏈嶄汉鍔涘氨鐪佷簡12涓?骞淬€?/p>
浜屻€佹墜鎶婃墜鎵撻€犱綘鐨勪笓灞炲紓甯革紙鏉愭枡娓呭崟锛?/h3>
鍒涘缓鑷畾涔夊紓甯稿氨璺熺粍瑁呬箰楂樹竴鏍风畝鍗曪紝浣嗘湁涓夊潡绉湪蹇呴』瑁呬笂锛?/p>
-
鈥?strong>鈥嬬户鎵跨埗绫婚€夊鍨嬪彿鈥?/strong>鈥?/p>
java澶嶅埗
// 妫€鏌ュ瀷寮傚父锛堝繀椤诲鐞嗭級 class BizException extends Exception {} // 杩愯鏃跺紓甯革紙鍙笉澶勭悊锛?/span> class AuthException extends RuntimeException {}
-
鈥?strong>鈥嬫瀯閫犳柟娉曞姞瓒冲脊鑽€?/strong>鈥?/p>
java澶嶅埗
public class OrderNotFoundException extends RuntimeException { private String orderId; public OrderNotFoundException(String orderId) { super("璁㈠崟澶辫釜锛佺紪鍙凤細" + orderId); this.orderId = orderId; } // 闄勫姞鏌ヨ鏂规硶 public String getSearchUrl() { return "https://log.com/search?orderId="+orderId; } }
-
鈥?strong>鈥嬪紓甯哥紪鐮佽鑼冣€?/strong>鈥嬶紙鏌愬ぇ鍘傝娉暀璁級
java澶嶅埗
// 閿欒绀鸿寖锛氬叏椤圭洰20绉嶄笉鍚屾牸寮忕殑閿欒鐮?/span> ERR-001銆丒RROR_002銆?span>1003... // 姝g‘濮垮娍锛氱粺涓€鏍囧噯 TRADE_1001_PAY_TIMEOUT // 妯″潡_缂栧彿_闂绫诲瀷
涓夈€佸紓甯告姇鏀剧殑涓夊ぇ榛勯噾娉曞垯锛堢嚎涓婂姙鐞嗙绫嶏級
鎵斿紓甯稿彲涓嶆槸闅忎究throw灏卞畬浜嬩簡锛岃繖浜涘潙鎴戞浛浣犱滑韪╄繃浜嗭細
java澶嶅埗// 馃毇 鍙嶉潰鏁欐潗锛氶殢鎰忔姏寮傚父瀵艰嚧浜嬪姟鍥炴粴澶辨晥 void updateUser() { try { // 鏁版嵁搴撴搷浣?/span> } catch(SQLException e) { throw new RuntimeException(e); // 瀵艰嚧浜嬪姟娉ㄨВ澶辨晥锛?/span> } } // 鉁?姝g‘濮垮娍锛氫繚鎸佸紓甯镐綋绯荤函鍑€ void safeUpdate() throws BizException { try { // 涓氬姟鎿嶄綔 } catch(SQLException e) { throw new BizException("DB_1001", "鐢ㄦ埛鏁版嵁鏇存柊澶辫触", e); } }
鈥?strong>鈥嬫€ц兘瀹炴祴鏁版嵁鈥?/strong>鈥嬶細
- 鍚堢悊浣跨敤鑷畾涔夊紓甯稿彲浣挎柟娉曞悶鍚愰噺鎻愬崌15%
- 婊ョ敤寮傚父浼氬鑷存€ц兘涓嬮檷40%锛堟煇绀句氦APP鐨勬儴鐥涙暀璁級
鍥涖€佸紓甯告崟鑾风殑缁堟瀬濂ヤ箟锛堝叏娴佺▼瀹炴搷锛?/h3>
鎶撳紓甯稿氨鍍忕帺澶瑰▋濞冩満锛屽緱璁茬┒绛栫暐锛?/p>
java澶嶅埗try { paymentService.process(); } catch (PaymentException e) { // 1. 璁板綍璇︾粏鏃ュ織 log.error("浜ゆ槗娴佹按鍙凤細{}", e.getTransactionId()); // 2. 杞崲鐢ㄦ埛鍙嬪ソ鎻愮ず showToast(e.getLocalizedMessage()); // 3. 鎵ц琛ュ伩鎿嶄綔 compensationService.scheduleRetry(e.getOrder()); }
鈥?strong>鈥嬩笁灞傚鐞嗙瓥鐣モ€?/strong>鈥嬶細
- 鎶€鏈眰锛氳褰曞畬鏁村爢鏍?涓婁笅鏂囧弬鏁?/li>
- 涓氬姟灞傦細瑙﹀彂琛ュ伩鏈哄埗
- 鐢ㄦ埛灞傦細灞曠ず鍙嬪ソ鎻愮ず+瑙e喅鏂规
鐙鏁版嵁鎻
鍘诲勾鍙備笌鏌愰摱琛岀郴缁熸敼閫犳椂锛岄€氳繃瑙勮寖寮傚父澶勭悊锛?/p>
- 绯荤粺骞冲潎鏁呴殰鎭㈠鏃堕棿浠?3鍒嗛挓闄嶈嚦7鍒嗛挓
- 澶滈棿鍊肩彮鎶ヨ閲忓噺灏?2%
- 鍏抽敭浜嬪姟鎴愬姛鐜囨彁鍗囪嚦99.98%
浣嗚娉ㄦ剰锛佸崈涓囧埆瀛︽煇P2P椤圭洰鎼炲嚭386涓嚜瀹氫箟寮傚父绫伙紝缁存姢鎴愭湰鐩存帴鐖嗙偢銆傝浣忚繖涓€?strong>鈥?%鍘熷垯鈥?/strong>鈥嬶細鑷畾涔夊紓甯稿崰姣斾笉瓒呰繃鎬诲紓甯哥被鐨?/20锛岀郴缁熸墠鑳戒繚鎸佺伒娲诲害銆?/p>
涓嬫褰撲綘鐨勯」鐩粡鐞嗚姹?鎶婃墍鏈夐敊璇兘鏀规垚鑷畾涔夊紓甯?鏃讹紝璇锋妸杩欑瘒鎸囧崡鐢╀粬鑴镐笂鈥斺€旀湁浜涘潙锛屽挶浠緱鎻愬墠缁曡繃鍘讳笉鏄紵