您的位置:首页 > 职场人生

黑马程序员--02--异常处理

2014-04-24 23:09 197 查看
黑马程序员--02--异常处理

                                                         ------- android培训java培训、期待与您交流!
----------
 /*


 

异常:

就是程序在运行时遇到不正常的情况

异常的由来:

问题是生活中的一种具体事物,java根据现实中的问题抽象成一种对象,专门描述java中所遇到的不正常现象也就是异常。

java中的问题分为两种:

一种是非严重的问题,一种是严重的问题。非严重的问题java用Exception描述,严重的问题java用Error描述。

对于Error一般不需要编写专门的代码进行处理。

对于Exception我们可以使用针对性的代码进行处理。

Error和Exception都具有一些共同的特征:比如不正常情况的信息,或引发的原因。

在编写程序的时候通过throws在函数上标识该函数可能会出现异常,如果需要声明多个可能出现的异常可以用","隔开,在函数上标识异常便于提高安全性。

当在函数内部使用了throw关键字抛出异常时必须对其进行处理,要么直接用throws在函数上声明,要么直接用try处理。

throws后面跟的是异常类。

throw后面跟的是异常对象。

Exception中特别的一个异常:RuntimeException

1、如果在函数内抛出RuntimeException异常,在函数上不需要throws编译一样通过。

2、如果在函数上声明异常,调用者也可以不进行处理,编译一样通过。

3、之所以不用在函数上声明是因为不需要调用者处理,当异常发生后希望程序停止,因为在程序中出现了无法运算的情况,需要重新修正代码才能继续。

处理异常:

1、在声明异常时要声明更为具体的异常,这样方便于处理。

2、对方法声明几个异常就对应几个catch块。如果多个cacth块中出现继承关系就要把父类异常向下放,否则子类异常不可能会读取到。

3、进行catch处理异常时不要简单的用printStackTrace()进行处理,一定要有具体的处理方式。

自定义异常:

1、必须继承Exception,原因是异常对象或者异常类都会被抛出,他们都具有可抛性,这是Throwable体系中的独有特点。

2、只有这个体系中的类和对象才可以被throws或throw操作。

3、自定义异常时如果遇到异常程序就无法继续进行运算,这样就要继承RuntimeException类。

4、自定义异常时可以将信息使用super关键字传递给父类的构造函数使用父类提供的方法,而不用重写方法。

异常分两种:

1、运行时异常。(RuntimeException)

该异常在编译时不需要被处理,编译器不检查。

该异常的发生不需要处理,需要程序停止,再重新修正代码。

2、编译时异常。

该异常需要进行处理,没有处理就会编译失败。

该异常被标识,标识可以处理。

字父类继承时覆盖方法的抛异常问题:

 1、例如有A<B<C("<"为继承)三个异常,父类中抛了B异常,子类中只能抛C或者B异常,而不能抛A异常。

 2、如果父类方法抛出多个异常,子类方法覆盖父类方法时只能抛父类异常的子集。

 3、如果父类或者接口的方法中没有异常抛出,子类或者实现接口时也不能抛出异常。如果子类方法发生了异常只能进行try处理,绝对不能抛。

 

 异常的优点:

 1、将问题进行封装。

 2、将正常的代码与异常的代码相分离,方便于阅读。

*/

//异常演示

class minusNumException extends Exception//自定义异常

{

minusNumException(String msg)

{

super(msg);//把信息传递给父类的构造函数

}

}

class SuanFa

{

public int divi(int a, int b)throws ArithmeticException,minusNumException

{

if(b<0)

{

thrownew
minusNumException("除数不能为负数!");

}

return a/b;

}

}

class ExceptionDemo

{

public static void main(String[] args) 

{

SuanFa a = new SuanFa();

try

{

int x = a.divi(4,-2);

System.out.println(x);

}

catch(Exception e)

{

System.out.println(e.toString());

}

System.out.println("Over!");

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: