Java之异常
? ? 異常在很多語言中都有,使用方法也是大同小異,基本的都是:
try{//危險動作 }catch(Exception ex){//嘗試處理 }因此卸載catch中的程序必定與所拋出的異常有關。注意異常Exception類型的對象可以是任何它的子類的實例。
還有一種情況是自己編寫異常,拋出異常的時候必須聲明異常。類似函數調用的過程。
1、有風險會拋出異常的程序代碼
public void takeRisk() throws BadException {if (abandonAllHope){throw new BadException();} }2、方法調用
Public void crossFigers() {try{anObject.takeRisk();}catch(BadExcetion ex){system.out.println("throw error!")ex.printStackTrace();} }那異常到底是是如何進行控制的呢?
try{Foo f = x.doRiskyThing();int b = f.getNum(); }catch(Exception ex){system.out.println("failed"); }system.out.println("we made it!");try模塊會先執行如果執行成功的話,然后會跳過catch模塊下面的部分。如果調用doRiskyThing()拋出異常,會跳過try中其他部分,直接運行catch塊,然后繼續下去。
那try-catch中還有一種finally的情況,就是無論是否成功,finally都會要執行的部分。例如想烹飪,就需要先打開爐子,如果烹飪失敗了,需要把爐子關掉,如果烹飪成功了也需要把爐子關掉。因此將關掉爐子的部分無需既放在try中又放在catch中,將其公共流程統一放在finally中。
try{trurnOverOn();x.bake() }catch(BakingException ex){ex.printStackTrace(); }finally{trurnOverOff(); }示例:
public class TestExceptions {public static void main(String [] args) {String test = "no";try {System.out.println("strart try");//輸入syso 按下alt+/快捷鍵doRisky("test");System.out.println("end try");}catch(ScaryException se) {System.out.println("scary exception");}finally {System.out.println("finally");}System.out.println("end of main");}static void doRisky(String test)throws ScaryException{System.out.println("start risky");if ("yes".equals(test)) {throw new ScaryException();}System.out.println("end tisky");return;} }?
總結
- 上一篇: Java中工程、包、类介绍
- 下一篇: Java线程池总结