java--异常

Exception(异常):运行时的概念,不正常的情况(例外的情况)

1,Throwable:运行时可能碰到的任何问题的总称;

      1)Error:指非常严重的错误,系统不要求程序员处理,也处理不了。如:硬件坏了.....等。

      2)Exception:从代码的角度是程序员可以处理的问题;

                          运行时异常:程序运行的时候出现的异常,可以不处理

                          编译时异常:程序编译的时候出现的异常,必需要处理

      UncheckedException(RuntimeException的子类) (未检查异常)如果是RuntimeException(或子类)就是为检查异常,其他就是已检查异常

           程序员小心谨慎完全可以避免的异常,系统不要求程序员处理(可以不管,运行会提示错误),

           如:3/0          数组下标越界。

      CheckedExcepiton   (已检查异常)

           系统要求必须处理异常。

      如果程序出现了异常,程序就不会向下执行。解决异常的目的是让程序能够向下运行。

2,异常处理:异常是相对于方法来说的

      1)声明抛出异常(消极的处理)

           throws(抛弃):写在方法名的定义上,后面跟要抛弃的异常类型。

           如:public void m1() throws Exception{.}

异常产生时,责任可能并不在当前方法,向外抛弃(把异常抛弃,留给调用者处理)可以让异常找到一个最佳的位置处理

           抛弃过程中可以对异常类型进行扩展,但是不能缩小。

           throw(抛出):一般出现在方法实现里,用来抛出异常对象(或者是产生异常),

           如:throw new FileNotFoundException();

           当代码出现异常时,代码不会向下执行,JVM会将异常封装成相应的异常类的对象,

           然后向外抛出。之后这个方法里剩下的代码就不会再执行了。

      对于一个方法的返回值:

           1)正常运行时,要求方法必须返回定义的类型的值。

           2)如果运行不正常(出现异常),方法返回的是异常对象

      方法覆盖:名相同,参数相同,返回类型相同,访问权限不能更小,子类抛弃的异常不能比父类更多。

2)try....catch(积极的处理):

           一个try语句后可以跟多个catch语句;catch时异常子类放上面,异常父类放下面。

            最好不要嵌套try...catch

           如果没有父子关系,先后无所谓;

      ---方法---( ){

           try{

                 //放的是有可能会产生异常的代码

                 xxxxxxxxxx;      (1)如果出现异常,JVM将其封装成一个对象,将其抛出,找对应的catch里的类型,是否和抛出的异常一致

                 xxxxxxxxxx;      (2)

           }catch(Exception1 e1){//e1是异常对象

                 //当try代码块出现异常时,执行catch代码块。

                 xxxxxxxxx; (3)

           }catch(Exception2 e2){

                 xxxxxxxxx; (4)//e2.printStackTrace;打印出错误的堆栈信息

           }finally{

                 //不管有没有异常出现都要执行的代码。

                 xxxxxxxxx; (5)

           }

                 xxxxxxxxx; (6)

      }

1)如果(1),(2)没产生异常,(2)执行后直接执行(5),然后执行(6)。

2)如果(1)产生异常,(2)不会被执行,直接跑出try{..},匹配catch,和catch里定义的类型一致,

执行catch完了后,直接跳到(5)执行,最后再执行(6),如果异常类型都不一致,将导至语法问题。

3)自定义异常类型(业务异常):

           如:class MyException extends Exception{

                      publicMyException(String str);

                      super(str);

                 }

Exception异常总结:

1、如果程序用了System.exit(0);则不会执行finally里的程序

2、在程序return前执行finally里的程序

3、Java中异常分为两类:

1) checked Exception

处理方式一、继续抛出,消极做法,直到抛出到JVM

处理方式二、用try..catch

2) unchecked Exception (runtime exception)

throwsArithmeticException,IOException应该是出现这两种异常就向上抛吧。
什么情况下一个方法抛出几个异常?一般来说应该是会抛出几种异常,然后在一级调用这个方法时处理一下。
如果没有特殊需要的话要把可能出现的异常都截获并处理。
try{
  method();
}catch(exception1 e1){
 do something;
}catch(exception2 e2){
 do something;
}……
e1的范围小于e2.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值