在Java语言中,我们用异常对象来表示不同的异常。
所谓Java异常对象就是一个存放着相关错误信息的对象,如果方法运行时产生了异常,该方法就可以抛出一个异常对象
为了表示不同种类的异常,Java语言中定义了许多异常类。
什么是异常 有异于常态,和正常情况不一样,有错误出现,阻止当前方法或作用域,称之为异常。
非检察异常:
1.空指针异常(NullPointerException)
2.数组下标越界异常ArrayIndexOutOfBoundsException
3.类型转换异常(ClassCastException)
4.算术异常(ArithmeticExcetion)
在Java语言中,任何的异常对象都是Throwable类的直接子类或间接子类的实例。Java的类库已经提供了一些常见的异常类,如果这些异常类不能够满足要求,用户也可以创建自己的异常类。**常见的而异常类**复制代码
- ArithmeticException
- ArrayIndexOutOfBandsException
- IOException
- FileNotFoundException
- NullPointerException
- NumberFormatException
Error类表示Java运行时产生的系统内部错误或资源耗尽等严重错误。 这种错误通常是程序无法控制和解决的,如果发生这种错误,通常的做法是通知用户并中止程序的执行。
常见的错误类
- NoClassDefFoundError
- OutOfMemoryError
- VirtualMachineError
异常抛出格式1
<访问权限修饰符> <返回值类型> <方法名>(参数列表) throws 异常列表
public void troubleSome() throws IOException复制代码
异常抛出格式2
try{
抛出异常的代码}catch (某Exception类型 e){ 处理该异常类型的代码}catch (某Exception类型 e){ 处理该异常类型的代码}finally{错误也执行的代码复制代码
}
异常处理练习一
代码1:
try{
System.out.println("请输入整数"); Scanner scanner = new Scanner(System.in); int age = scanner.nextInt(); System.out.println("十年后你"+(age + 10) + "岁"); }catch (Exception e){ System.out.println("你应该输入整数"); } System.out.println("程序结束啦"); 多类型处理:复制代码
try{
System.out.println("请输入整数"); Scanner scanner = new Scanner(System.in); int age = scanner.nextInt(); System.out.println("十年后你"+(age + 10) + "岁"); }catch (InputMismatchException e){ System.out.println("你应该输入整数"); }catch (ArithmeticException e){ System.out.println("除数不能为0"); } System.out.println("程序结束啦");复制代码
异常来顺序是 先子类后父类(必须这样子)
finally
当一个方法的某条语句抛出异常后,该方法剩余的语句将无法继续执行。这种情况下,方法往往无法将其占用的资源进行释放。 解决方法: 在每个catch子句的异常处理代码中也加上资源释放的代码,但这种方法非常麻烦; Java语言的异常处理机制中提供了一个更好的方案-程序员可以使用finally子句来统一进行资源释放之类的工作。
代码如下; try{
System.out.println("请输入整数"); Scanner scanner = new Scanner(System.in); int age = scanner.nextInt(); System.out.println("十年后你"+(age + 10) + "岁"); }catch (InputMismatchException e){ System.out.println("你应该输入整数"); } **finally** { System.out.println("*********** 我就要执行 *********"); } System.out.println("程序结束啦");复制代码