黑马程序员——异常

异常处理和常用类:

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

1、异常

异常:就是不正常,是指程序在运行时出现的不正常情况。其实就是程序中出现的问题。这个问题按照面向对象思想进行描述,并封装成了对象。因为问题的产生有产生的原因、有问题的名称、有问题的描述等多个属性信息存在。当出现多属性信息最方便的方式就是将这些信息进行封装。异常就是java按照面向对象的思想将问题进行对象封装。这样就方便于操作问题以及处理问题。

 

出现的问题有很多种,比如角标越界,空指针等都是。就对这些问题进行分类。而且这些问题都有共性内容比如:每一个问题都有名称,同时还有问题描述的信息,问题出现的位置,所以可以不断的向上抽取。形成了异常体系。

 

异常的体系 Throwable

Error

通常指JVM出现重大问题如:运行的类不存在或者内存溢出等。

不需要编写针对代码对其处理,程序无法处理。

Exception

在运行时运行出现的一些情况,可以通过try,catch,finally处理

异常处理两种方式:

1、捕获异常:try catch              直接处理可能出现的异常!

2、声明异常:throws                 声明告诉调用者可能的异常,暴露问题,调用者自己处理!

 

总结:

Exception 和 Error的子类名大都是以父类名作为后缀。

Java异常其实是对不正常情况的一种描述,并将其封装成对象;

Java在 设计异常体系时,将容易出现的异常情况都封装成了对象

异常处理格式

try{

              //可能出异常的代码

} catch(异常类  对象){

              //处理该异常类型的语句

}

[finally] {

              //一定会执行的代码

              //catch块使用System.exit(1);除外

}

2、异常的分类

 

异常分类:

编译时被检查异常;        ---> Checked异常

在程序中必须使用try...catch处理;

编译时不被检测的异常; --->Runtime异常

可以不使用try...catch处理,但一旦出现异常就将由JVM处理。

 

异常的分类之Runtime异常

 

 

RuntimeException(运行时异常)是指因设计或实现方式不当而导致的问题.

说白了,就是程序员造成的,程序员小心谨慎是完全可以避免的异常.比如,事先判断对象是否为null就可以避免NullPointerException异常,事先检查除数不为0就可以避免ArithmeticException异常;

 

特点:

这种异常Java编译器不会检查它,也就说程序中出现这类异常的时候,即使不处理也没有问题,但是一旦出现异常,程序将异常终止,若采用异常处理,则会被相应的程序执行处理.

3声明异常(throws)

 

在可能出现异常的方法上声明抛出可能出现异常的类型:

声明的时候尽可能声明具体的异常,方便更好的处理.

当前方法不知道如何处理这种异常,可将该异常交给上一级调用者来处理(非RuntimeException类型的异常)。

方法一旦使用throws声明抛出方法内可能出现的异常类型, 该方法就可以不再过问该异常了;

一个方法调用另一个使用throws声明抛出的方法,自己要么try...catch , 要么也throws;

 

格式:

public 返回值类型  方法名(参数列表...)

                     throws异常类A,异常类B... {

      

}

 

4、throw

自行抛出一个异常对象,抛出异常类的对象;

若throw抛出的是Runtime异常:

程序可以显示使用try...catch来捕获并处理,也可以不管,直接交给方法调用者处理;

若throw抛出Checked异常:

要么放在try里自己处理,要么放在一个throws声明的方法里面,交给调用者处理。

 

throws &throw

 

throws用于在方法上声明该方法不需要处理的异常类型。

throw用于抛出具体异常类的对象。

throws与throw的区别:

thorws用在方法上,后面跟异常类名,可以是多个异常类。

throw用在方法内,后面跟异常对象,只能是一个。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值