1.异常
1)概念:完成一个指定的任务,除正常执行该任务以外的所有情况。
2)异常的处理体系
A.产生异常:
语法: throw new 异常类(异常信息);
throw new Exception("输入的年龄不是数字");
B.处理异常
1)抛出异常
语法: 方法声明(参数列表) throws 异常类名,异常类名{
}
用法:当异常没有替代方案时。(甩锅)
2)捕捉异常:
语法:
try{
//发生异常的代码
}catch(异常类 e){
//替代方案
}catch(异常类 e){
//替代方案
}finally{
//最终要执行的
}
用法:当异常发生时,有替代方案时。
3)try...catch用法
try{
//发生异常的代码
}catch(异常类1 e){
//替代方案
}catch(异常类2 e){
//替代方案
}finally{
//最终要执行的
}
A.try不可以省略 catch可以0或多个 finally可以省略
B.当try中的代码发生异常时,以后所有代码都不会被执行。而是执行进入对应catch块中
C.finally总是会被执行 一般try..catch块中最后被执行。
D.多个catch块中,如果catch中的类存在继承关系 那么子类必须写在父类前面
try{
Class.forName("").newInstance();
}catch(ClassNotFoundException e){
}catch(Exception e){
}
4)异常体系结构
Throwable
|-Error 错误 不可恢复的
IOError,OutOfMemoryError StackOverflowError ThreadDeath
|-Exception 异常 由于软件导致问题 可以恢复有替代方案。
check异常:编译时异常 在编译时,检查异常是否处理
ClassNotFoundException IOException
ParseException InterruptedException
IllegalAccessException NoSuchFieldException
NoSuchMethodException SQLException
SAXException XMLParseException
|-RuntimeException
非check异常:运行时异常 在运行时,才会检查的异常
ArrayIndexOutOfBoundsException StringIndexOutOfBoundsException
NullPointerException ArithmeticException
BufferOverflowException ClassCastException
IllegalArgumentException
5)自定义异常
A)步骤
(1)继承Exception或RuntimeException
(2)定义对应的构造方法
1、请说明throws和 throw的区别?
throws:
I-抛出的是在方法体中可能出现的异常,抛给调用处处理|-声明的位置是在方法名之后
throw:
|-抛出的手工实例化的异常对象(我们自己创建的一个异常对象),相当于程序出现了一个异常。
|-声明的位置是在方法体之内
2、请说明Exception和 RuntimeException的区别和关系?
Excetion是 RuntimeException的父类
Exception类型的异常需要强制进行处理,如果不处理编译无法通过。
RuntimeException类型异常叫做运行时异常不需要强制处理
3、请说明Error和 Exception的区别和联系?
Error和 Exception都是 Throwable 的子类
Excption是异常,在程序运行期间出现的,是可以通过代码进行处理的( try捕获或者抛出)
Error是错误,是在程序运行之前出现的,比如无加载主类,是不能通过程序代码进行处理的(在编译期间就出现的错误)
4、 public int a(){
int a = 10;
try{
return a++;
}finally{
return a++;
}
}
a:12
函数返回值 11
5、 public int a(){
int a = 10;
try{
return a++;
}finally{
a++;
}
}
a:12
函数返回值 10



