异常

来源:互联网 发布:莫寒应援会的淘宝店 编辑:程序博客网 时间:2024/05/17 05:05
异常:
异常就是程序在运行时出现的不正常情况
异常由来:
问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象。
其实就是java对不正常情况进行描述的对象体现。
对于问题的划分,1严重的2非严重的。
对于严重的:Error描述。对于Error一般不编写针对性的代码处理。
对于非严重的:Exception类进行描述。对于Exception可以使用针对性的方式进行处理。

Error&Execption 共性抽取为Throwable
Throwable(可抛的)
--Error
--Exception

异常的处理:
java提供的特殊语句处理异常
try{
可能发生异常的语句
}catch (异常类 变量) {
处理异常语句
}catch (异常类 变量) {

}finally {
一定会执行的语句
}

对捕获到的一场对象进行常见方法操作:
String  getMessage();// 获取异常的信息 eg. / by zero
String  toString();//异常的全部类名字+异常的信息 (更全面) //java.lang.ArithmeticException: / by zero
void printStackTrace();//打印堆栈信息: java.lang.ArithmeticException: / by zero
at com.xxx.xxx.action.XXX.main(XXXAction.java:558) 

关键字:throws 声明抛出的异常 使用声明抛出异常的函数必须进行对其捕捉!或,继续声明抛出。

对多异常的处理。
1、声明异常时建议声明更为具体的异常,这样处理的更具体。
catch(Exception e) // 多态

2、对方声明几个异常,对应几个catch块
Exception 异常放在下面,不然具体的catch块相当于死代码
try {

}catch (Exception e ) {

}catch (ArithmeticException e) {
}
// Unreachable catch block for ArithmeticException. It is already handled by the catch block for Exception
若没有catch住,将上抛。后续代码不执行。
3.自定义异常
如何定义异常信息?
1。因为鹤类中已经把异常信息都操作完了,所以子类构造时,重写父类(把异常信息传递给父类super(message)),可通过getMessage方法获取异常信息。

自定义异常必须是extends Exception的因为这是一个体系。
异常类和异常对象都被抛出,他们都具有可抛性,这个可抛性是Throwable这个体系中独有的特点。
只有这个体系中的类和对象才可以被throws和throw操作。

简单说。
1.自定义异常需继承Exception 
2.需手动throw异常(throw new MyExcption(msg))//这里相当于Exception e = new MyException(msg); 多态
3.方法最好继续上抛否则就必须trycatch住当前throw
4.若上抛,则调用者必须上抛或调用。

4.throwS和throw的区别
1位置:throws 使用在函数上,throw 使用在函数内
2throw后面跟异常类可多个异常类,逗号分隔;throw跟异常对象。
5.finally 最终都将执行的语句 return 之前,throw之前
通常用于关闭资源,或某些语句一定要执行

三种格式
try{}catch() {}
try{} catch() {} finally{}
try() finally{} 

// 只有catch才处理异常,没有catch就代表异常没被处理。若是检测异常必须,则必须声明。

异常在覆盖中的体现。
1子类覆盖父类方法必须抛出小于个数或子类异常。可以抛出多个运行时异常但不能抛出多于父类的检测异常,而且不能抛出更高(父类)的异常。
因为多态情况下,是看的父类的方法,而调用时确实执行子类的方法,所以不能有更多的异常或更高级的异常。
2若父类没有抛出异常尽可以抛出运行时异常。

package
对文件进行分类管理
给类提供多层命名空间
写在程序的第一行
类名的全称是 包名.类名

包也是一种封装形式

public 公开访问权限

protected 子类访问权限

defualt 包访问权限

private 自身类

(注:一个java文件,不能出现两个以上的共有类或接口)

import 引入包 可用*代替所有
0 0
原创粉丝点击