异常

有些异常是可以预测到的,需要处理这些预见到的异常,如果有异常发生,而不处理异常,就会导致程序中断,下面的其他代码也不能正常执行。所以可以通过异常处理机制来防止程序的中断。

  • 常见异常
    RuntimeException :
    错误的类型转换
    数组下标越界
    空指针访问
    IOExeption :
    从一个不存在的文件中读取数据
    越过文件结尾继续读取EOFException
    连接一个不存在的URL

  • 异常处理机制
    Java异常处理:Java采用异常处理机制,将异常处理的程序代码集中在一起,与正常的程序代码分开,使得程序简洁,并易于维护。
    Java提供的是异常处理的抓抛模型。

  1. Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。
  2. 如果一个方法内抛出异常,该异常会被抛到调用方法中。如果异常没有在调用方法中处理,它继续被抛给这个调用方法的调用者。这个过程将一直继续下去,直到异常被处理。这一过程称为捕获(catch)异常。
  3. 如果一个异常回到main()方法,并且main()也不处理,则程序运行终止。
    程序员通常只能处理Exception,而对Error无能为力。
  • 捕获异常(catch)
    异常处理是通过try-catch-finally语句实现的。
    try
    {
    ...... //可能产生异常的代码
    }
    catch( ExceptionName1 e )
    {
    ...... //当产生ExceptionName1型异常时的处置措施
    }
    catch( ExceptionName2 e )
    {
    ...... //当产生ExceptionName2型异常时的处置措施
    }
    [ finally{
    ...... //无条件执行的语句
    } ]
  • 抛出异常(throws)
  1. 如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显式地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理(捕获处理)
  2. 在方法声明中用 throws 子句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。
    子类重写父类的方法时,子类不可以抛出范围更大的异常。
  • 人工抛出异常
  1. 首先要生成异常类对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。
    IOException e =new IOException();
    throw e;
  2. 可以抛出的异常必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误:
    throw new String("want to throw");
  • 创建用户自定义异常类
class MyException extends Exception {
    private int idnumber;
    public MyException(String message, int id) {
        super(message);
        this.idnumber = id;
    } 
    public int getId() {
        return idnumber;
    }
}

public class Test01{
        public void regist(int num) throws MyException {
    if (num < 0) 
              throw new MyException(“人数为负值,不合理”,3);
    else
              System.out.println("登记人数" + num );
        }
        public void manager() {
    try {
               regist(100);
    } catch (MyException e) {
               System.out.print("登记失败,出错种类"+e.getId());     
    }
    System.out.print("本次登记操作结束");
       }
       public static void main(String args[]){
    Test8_6 t = new Test8_6();
    t.manager();
       }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容