Error和Exception,throw和throws的区别

1 Error类和Exception类

1.1 Error(错误)

1.2 Exception(异常)

1.3 常见的RuntimeException异常

1.4 常见的CheckedException异常

2 throw和throws

2.1 位置不同

2.2 功能不同


1 Error类和Exception类

Error类和Exception类都是继承Throwable类

1.1 Error(错误)

是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。

1.2 Exception(异常)

表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

Exception又分为两类

  • CheckedException:(编译时异常) 需要用try——catch显示的捕获或者直接throws异常。
  • UnCheckedException(RuntimeException):(运行时异常)不需要捕获,对于程序错误(不可恢复)的异常使用RuntimeException。

1.3 常见的RuntimeException异常

  • NullPointerException - 空指针引用异常
  • ClassCastException - 类型强制转换异常。
  • IllegalArgumentException - 传递非法参数异常。
  • ArithmeticException - 算术运算异常
  • ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
  • IndexOutOfBoundsException - 下标越界异常

1.4 常见的CheckedException异常

  • SQLException
  • OException
  • ClassNotFoundException
  • NamingException,
  • ServletException,

我们在编写程序过程中try——catch捕获到的或者直接throws的异常都是CheckedException。

2 throw和throws

2.1 位置不同

  • throws 用在函数头上,后面跟的是异常类,可以跟多个;
  • throw 用在函数体内,后面跟的是异常对象。

2.2 功能不同

  • throws  用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;
  • throw 抛出具体的问题对象,执行到throw,功能就已经结束了,跳转到调用者,并将具体的问题对象抛给调用者。也就是说  throw  语句独立存在时,下面不要定义其他语句,因为执行不到。
  • throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw 则是抛出了异常,执行throw 则一定抛出了某种异常对象。
  • 两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

你可能感兴趣的:(JAVA)