Java中异常机制的意义

什么是异常:异常就是程序在运行时出现的不正常情况。对于严重的情况Java通过Error类进行描述,一般不用编写代码处理;对于不严重的情况Java通过Exception描述,一般编写针对性代码对其进行处理。

异常由来:问题也是生活中一个具体的事物,也可以通过Java类的形式进行描述(比如进行运算时被除数不可以为0否则出现ArithmeticException异常,数组越界会出现ArrayIndexOutOfBoundsException等等),并封装成对象。即Java对不正常情况进行描述后的对象体现。简单来说是Java万物皆对象思想的体现。

异常的意义:Java的" 异常机制"就是在处理各类问题时给了程序员非常简单而灵活的方式。一般来说,其它高级语言主要是让函数使用者来关注该函数可能会出现的异常情况,而 java则是把这件事情交给方法的设计者来做。这对于方法的使用者来说带来的方便是不会因为责任心不强,或者办事丢三那四,会忘了在使用方法时处理可能发生的异常情况。

异常处理方法:Java提供特有的语句进行处理异常。

  try{
        需要被检测的代码。
   }
  catch(异常类 变量){
         处理异常的代码。
   }
  finally{
       一定会执行的语句。
   }

throws:声明方法可能要抛出的异常。
throw:手动抛出异常。

代码部分:(以被除数为0为例)

//1.首先定义一个异常类

public class Div {
   public int div(int a,int b)throws Exception{
//功能上通过throws 关键字声明该功能可能出现问题。
//调用者必须在主函数抛出此异常(throws Exception)或者捕获该异常(try catch)
return a/b; 
 }

//2.调用含有异常类的方法

public class DivDemo {
public static void main(String[] args) {
Div d = new Div();
try {
int x = d.div(6, 0);
System.out.println("x=" + x);
} catch (Exception e) {
System.out.println("除数不能为零");
System.out.println(e.getMessage());// 显示:/ by zero
System.out.println(e.toString());//  显示:异常名称
e.printStackTrace();//显示: 异常名称,异常信息,异常出现的位置。
//jvm虚拟机默认的异常处理机制,调用printStackTrace()方法。打印异常堆栈的跟踪信息。
} finally{

                        System.out.println("over");//程序一定会执行的代码。

                       }
                  }

自定义异常:项目中出现特有的异常,这些异常没有被Java描述并封装进对象。
 对这些特有的异常问题可以按照Java对问题封装的思想。将特有的问题。进行自定义封装
当函数内部出现throw抛出异常对象,那么就必须对应的处理动作。(1.try catch  2.函数上声明让调用者处理)。

异常在子类覆盖中的体现:

①子类覆盖父类时,如果父类方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或该异常的子类。
②父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
③如果父类或者接口的方法没有抛出异常,那么子类在覆盖方法时,也不可以抛出异常。
④如果子类方法发生了异常。就必须进行try处理,绝对不能抛出。

你可能感兴趣的:(Java)