异常:编译正常,但运行出错,会中断正常指令流
RuntimeException:运行时异常
分为:uncheck exception、和check exception(除了RuntimeException以及子类以外的)
uncheck exception
class Test { public static void main(String args[]){ System.out.println("1"); int i = 1/0; System.out.println("2"); } }
异常处理:uncheck exception,try里面出异常,就跳到catch里面执行
try{..}
catch(){..}
finally{..}
class Test { public static void main(String args[]){ try{ int i = 1/0; }catch(Exception e){ //出异常执行这里 e.printStackTrace(); System.out.println("2"); }finally{ //不管出不出异常都执行这里 System.out.println("3"); } } }
throw抛出异常对象:
class User { void setage(int age){ if(age<0){ RuntimeException r = new RuntimeException("年龄不为负"); throw r; } System.out.println("函数末"); } }
class Test { public static void main(String args[]){ User u = new User(); u.setage(-3); } }
throws声明一个函数有可能产生异常,调用的时候再处理异常
class User { void setage(int age) throws Exception{ if(age<0){ Exception e = new Exception("年龄不为负"); throw e; } } }
class Test { public static void main(String args[]){ User u = new User(); try{ u.setage(-3); }catch(Exception e){ System.out.println(e); } } }