java程序在执行过程中发生的异常事件可分为两类
Error:java虚拟机无法解决的严重问题,如jvm系统内部错误,资源耗尽,内存溢出等。这种情况改代码吧 Exception:其他因为程序错误或偶然在外因素导致的一般性错误,可以编写一些针对的代码进行这种异常处理
发生异常后,会在异常处生成一个异常类型的对象抛出,异常之后的代码都不执行
1. try…catch…finally
只执行一个catch,一旦执行了完catch,就跳出try…catch结构,如果有写finally,就进入finally
try{//可能出现异常的代码}catch(异常类型1 变量名1){//出现异常类型1的异常的处理方式}catch(异常类型2 变量名2){//出现异常类型2的异常的处理方式}catch(Exception e){//父类异常,捕获所有异常,e是具体的异常//输出异常//System.out.println(e);//e.printStackTrace();}//可以写多个catchfinally{//finally可选可不选//一定会被执行的代码,//像数据库连接,输入输出流,网络编程等资源,jvm是不能自动回收的,我们要手动进行回收//放在finally里面最合适,以防上面的代码异常回收不了}
2. throws
写法throws 异常类型
public class test1 {public static void main(String[] args) {//再抛就抛给jvm了,直接把jvm整挂了,用try catch处理了try{xxx();//调用xxx方法,收到一个xxx抛出的异常,这个异常最开始是sss抛给xxx的,xxx不想处理又抛给上面}catch (Exception e){e.printStackTrace();}}//throws后面的异常类型多个加逗号隔开,我只写了一个父类的异常public static void xxx() throws Exception{String a="asd";Integer b=Integer.parseInt(a);}public static void sss() throws Exception{xxx();//xxx方法有异常抛出,谁调用就抛给谁。//xxx抛出异常给sss就不管了,sss接手了异常,要么处理了,要么继续往上抛}}
