标签:
------- android培训、java培训、期待与您交流! ----------
异常就是程序在编译和运行时出现的不正常情况。通过面向对象的编程思想将异常进行封装,以java类的形式对其进行描述。
一. 异常的体系
1.• Throwable
• Error
• 通常出现重大问题如:运行的类不存在或者内存溢出等。
• 不编写针对代码对其处理
• Exception
• 在运行时运行出现的一切情况,需要在程序内部进行处理或者抛出。
为了记忆和书写方便,Error和Exception的子类有是由其父类名作为类名的后缀名。
2.Throwable类中的共性方法
getMessage()
获取异常信息,返回字符串。
toString()
获取异常类名和异常信息,返回字符串。
printStackTrace()
获取异常类名和异常信息,以及异常出现在程序中的位
置。返回值void。
printStackTrace(PrintStream s)
通常用该方法将异常内容保存在日志文件中,以便查
阅。
二. 对异常的处理方式
java中提供了特定的语句对异常进行处理,主要是通过两种方式。
1.try catch finally语句处理
格式:
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码;(处理方式)
}
finally
{
一定会执行的语句;
}
2.在功能上通过throws的关键字声明该功能有可能会出现问题
如下代码
class Model{ public static void main(String[]args){ try{ div(5,0);//可能发生异常的语句 }catch(Exception e){ System.out.println("除数不能是零");//对异常捕获之后的处理 e.printStackTrace(); }finally{ System.out.println("over");//无论是否发生异常最终都会执行的语句,除了在前面出现程序结束的情况,例如System.exit();退出程序 } } public static int div(int a,int b)throws Exception{//此处对内部可能出现的异常进行声明抛出,由调用者进行处理 return a/b; } }
三.自定义异常
当需要对一些在相应程序运行环境下产生的异常进行处理时,经常会使用到自定义异常,对异常对象进行封装。
自定义异常类需要继承自Exception或者其子类。通过构造函数定义异常信息,同时通过throw关键字对异常进行抛出。
如下代码
class FuShuException extends Exception { private int value; FuShuException()//因为要对构造函数进行重载,所以需要手动写入无参的构造函数 { super(); } FuShuException(String msg,int value) { super(msg);//借用父类的构造函数将异常信息进行处理 this.value = value; } public int getValue() { return value; } } class Demo { int div(int a,int b)throws FuShuException//内部抛出异常,必须要在外部进行标识,RuntimeException异常及其子类异常是不需要标识的。 { if(b<0) throw new FuShuException("出现了除数是负数的情况------ / by fushu",b);//当异常发生时通过手动对异常进行声明抛出 return a/b; } } class Model { public static void main(String[] args) { Demo d = new Demo(); try { int x = d.div(4,-9); System.out.println("x="+x); } catch (FuShuException e) { System.out.println(e.toString()); System.out.println("错误的负数是:"+e.getValue()); } finally { System.out.println("over"); } } }
四.异常扩展
1.对于多异常的处理
声明异常时,建议声明更为具体的异常。这样处理的可以更具体。
对方声明几个异常,就对应有几个catch块。不要定义多余的catch块。
如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
2.RuntimeException
运行时异常,RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上标识
3.常见异常类
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
输入输出异常:IOException
标签:
原文地址:http://www.cnblogs.com/ss561/p/4573264.html