异常:
1:错误的分类
Error:错误(不可控),一般指的是系统方面的异常,比如
蓝屏,内存溢出,jvm运行环境出现了问题。
Exception:是可控的异常,程序员可以在编写程序时解决的错误。
两者的父类为Throwable。
2:我们来学习我们可以控制的异常:
Exception:是所有异常的父类,其下面可以派生出很多
子类型。
3:异常处理机制。
在编写程序时,某一块代码可能会某些异常。我们应该对这块
进行异常处理。怎么处理呢?使用
如下语法:
try{
}catch(异常类型的声明){
}finally{
}
进行处理。 我们将可以出现异常的代码块放入try{}中,
jvm会进行检查try{}中的代码,如果有异常,jvm就会
将异常信息封装成相应的异常对象,然后转移到catch(){
}代码块中进行处理,执行{}中的业务逻辑。然后会执行finally
模块的代码。如果try{}中没有异常出现,最后也会执行finally模块
中的逻辑。
4:catch代码块,可以有1个或多个,在声明异常变量时,
从上到下的catch块使用的异常类型可以是同级别的,如果
多个异常类型有父子关系时,那么应该先写子异常,在写父异常。
(先写父异常时,编译不通过)
5:finally代码块:finally代码块是有没有异常都会执行的,最后执行。
通常用于关闭某些操作,删除临时文件等
当程序中有return关键字的时候,先执行return,再执行finally代码块
6:throw:抛出异常对象。
有时候,程序中捕获的异常,不想在catch代码块中处理。
就要往外抛出,抛给调用者(谁调用这个方法谁就是调用者)
由调用者来处理。main中的异常最好直接处理。
7:throws:在定义方法时,必须声明要抛出的异常对象的类型
throws:就是声明通知调用要处理的异常类型
8:异常的分类
检查性异常(编译时异常)
reg:IO异常
非检查性异常(运行时异常)
reg:
NullPointerException
ArrayIndexOutOfBoundsException
StringIndexOutOfBOundsException
ClassCastException
NumberFormatException
IllegalArgumentException
不要把ClassNotFoundException当成运行时异常
在throw运行时异常对象时,方法处不需要声明throws,因为编译器
会忽略运行时异常。
当throw编译时异常时,必须在方法处声明throws此对象的类型。
9:当父类中的方法声明异常时,子类重写方法时
应该注意的事项
1:错误的分类
Error:错误(不可控),一般指的是系统方面的异常,比如
蓝屏,内存溢出,jvm运行环境出现了问题。
Exception:是可控的异常,程序员可以在编写程序时解决的错误。
两者的父类为Throwable。
2:我们来学习我们可以控制的异常:
Exception:是所有异常的父类,其下面可以派生出很多
子类型。
3:异常处理机制。
在编写程序时,某一块代码可能会某些异常。我们应该对这块
进行异常处理。怎么处理呢?使用
如下语法:
try{
}catch(异常类型的声明){
}finally{
}
进行处理。 我们将可以出现异常的代码块放入try{}中,
jvm会进行检查try{}中的代码,如果有异常,jvm就会
将异常信息封装成相应的异常对象,然后转移到catch(){
}代码块中进行处理,执行{}中的业务逻辑。然后会执行finally
模块的代码。如果try{}中没有异常出现,最后也会执行finally模块
中的逻辑。
4:catch代码块,可以有1个或多个,在声明异常变量时,
从上到下的catch块使用的异常类型可以是同级别的,如果
多个异常类型有父子关系时,那么应该先写子异常,在写父异常。
(先写父异常时,编译不通过)
5:finally代码块:finally代码块是有没有异常都会执行的,最后执行。
通常用于关闭某些操作,删除临时文件等
当程序中有return关键字的时候,先执行return,再执行finally代码块
6:throw:抛出异常对象。
有时候,程序中捕获的异常,不想在catch代码块中处理。
就要往外抛出,抛给调用者(谁调用这个方法谁就是调用者)
由调用者来处理。main中的异常最好直接处理。
7:throws:在定义方法时,必须声明要抛出的异常对象的类型
throws:就是声明通知调用要处理的异常类型
8:异常的分类
检查性异常(编译时异常)
reg:IO异常
非检查性异常(运行时异常)
reg:
NullPointerException
ArrayIndexOutOfBoundsException
StringIndexOutOfBOundsException
ClassCastException
NumberFormatException
IllegalArgumentException
不要把ClassNotFoundException当成运行时异常
在throw运行时异常对象时,方法处不需要声明throws,因为编译器
会忽略运行时异常。
当throw编译时异常时,必须在方法处声明throws此对象的类型。
9:当父类中的方法声明异常时,子类重写方法时
应该注意的事项
10:自定义异常。只需要继承Exception,用系统提供的构造器即可。
异常机制:
try{
捕捉代码片段出现的异常信息,封装成异常对象
}catch(引用捕捉到的异常对象){
处理异常。
}finally{
不管try中是否出现异常,都会执行此部分代码。
一般都用来用做关闭,释放等操作。
}
catch:可以写一个或一个以上。先处理子类型异常,在处理父
类型异常
throw:抛出异常对象,抛给调用者(方法),让调用者处理
throws:在定义方法处声明抛出的异常类型。
如果throw的是运行时异常,可以不用throws。
如果throw的是编译时异常,必须使用throws。
在方法重写时:
如果父类的方法声明了异常,子类的方法可以不声明,
也可以声明此异常或子类异常
父类的方法没有声明异常,子类的方法一定不能声明异常