java_day6

异常

  • 任何程序设计语言在运行时都可能出现错误,比如数组越界之类的。

  • 捕获错误最理想的是在编译期间,但有的错误只有在运行时才会发生

  • 对于这些错误,一般有两种解决方法

    • 遇到错误就停止程序的运行
    • 由程序员在编写程序时,就考虑到错误的检测,错误消息的提示,以及错误的处理
  • 异常:在java语言中,程序执行中发生的不正常情况叫做“异常”

  • java中的异常常用于处理非预期的情况,比如文件没有找到,网络错误,非法的参数

错误主要分为两类:

  • error:JVM系统内部错误,资源耗尽等严重情况

  • exception:其他因编程错误而遇到的问题:

    • 空指针访问
    • 试图读取不存在的文件
    • 网络连接中断

捕获异常

  • java提供的是异常处理的抓抛模型
  • java程序的执行过程中如果出现异常,会自动生成一个异常类对象,该异常对象将被提交给java运行时系统,这个过程称为抛出异常
  • 如果要给方法内抛出异常,该异常将常会抛到调用方法中。如果异常没有再调用方法中处理,他会继续被抛给这个调用方法的调用者。这个过程会一直继续下去,直到异常被处理。这一过程称为捕获异常
  • 如果一个异常回到main方法,并且main不处理,则程序运行停止
  • 程序员通常只能处理exception错误,error无力

在捕获异常的代码块中,如果前面的代码有异常,就不会执行后面的

  • getMessage()方法可以得到相关异常事件的信息
  • printStackTrace()用来跟踪异常事件发生时执行堆栈的内容。

抛出异常 throw/throws

throw出现在方法体中 throws出现在方法头

在当前函数抛出的异常,并不知道如何处理,就先将其抛出,由谁使用就由谁处理,如果使用者也不知道,那就继续抛出

如果父类中的方法抛出异常,子类中重写父类的方法也要抛出异常,重写方法不能抛出比父类范围更大的异常

自定义异常类

  • 通过继承java.lang.Exception类声明自己的异常类
  • 在方法适当的位置生成自定义异常的实例,并用throws语句抛出
  • 在方法的声明部分用throws语句声明该方法可能抛出的异常

立志做一名攻城狮