深入理解JAVA异常和异常处理机制

(一)什么是异常和异常处理

异常:程序不正常的行为和状态。比如试图打开一个根本不存在的文件等。
异常处理:程序返回到安全状态。异常处理会改变程序的控制流程,让程序有机会对错误做出处理。

(二)异常的分类

i.检查性异常:外界相关的错误。eg:打开一个不存在的类、加载一个不存在的类等。
ii.运行时异常:程序有关的异常。eg:5/0\空指针、数组越界等。
iii.ERROR:系统内部错误或资源耗尽。错误不是异常,而是脱离程序员控制的问题。

(三)异常处理机制

(3.1)try-catah语句

JAVA使用try-catch语句来处理异常,将有可能出现的异常操作放在try-catch的try部分,一旦try部分抛出异常对象,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try立即结束执行,转向catch部分。所以程序将发生异常后的处理放在catah部分。

try-catah语句大的格式如下:

try{ 
  包含可能发生异常的语句//正常业务逻辑代码
}
catch(ExceptionSubClass1 e){
...//当try发生异常,将执行catch代码,若无异常,不执行
}
catch(ExceptionSubClass2 e){
...
}

(3.2)调试代码

public class text1
{
 public static void main(String[] args) 
 {
  int n=0,m=0,t=1000; 
  try
  {
   m=Integer.parseInt("8888");
   n=Integer.parseInt("ab89");//发声异常,转向catch
   t=7777;//t没有机会执行
  }
  catch(NumberFormatException e)
  {
   System.out.println("发生异常:"+e.getMessage());
  }
 }
}

运行结果如下:
在这里插入图片描述

(四)自定义异常类

(4.1)自定义异常类概述

在编写程序时可以继承Exception类或者其子类定义自己的异常类,然后根据程序的需要来规定哪些方法产生这样的异常。一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。程序必须在try-catch块语句中调用可能发生异常的方法,其中catch的作用就是捕获throw关键字的异常对象。

注:throw不是JAVA的关键字,该关键字的作用就是抛出异常。throw和throws是两个不同的关键字。

(4.2)调试代码

public class text1 extends Exception{
    private int detail;
    public text1(int a) {
        this.detail = a;
    }
    public String toString() {
        return "MyException{" +"detail=" + detail +'}';
    }
}

import java.rmi.MarshalException;
public class text2 {
    static void test(int a) throws Exception {
        System.out.println("传递的参数为:"+a);
        if(a>10){
            throw new Exception();
        }
        System.out.println("成功");
    }
    public static void main(String[] args) throws Exception {
        try {
            test(11);
        } catch (MarshalException e) {
            System.out.println("MyException==>"+e);
        }
    }
}

注意一个方法被覆盖,覆盖它的方法必须抛出相同的异常,或者异常的子类。如果父类的方法抛出多个异常,那么重写的子类方法必须抛出哪些异常的子集,也就是不能抛出新异常。

猜你喜欢

转载自blog.csdn.net/aabb12345687/article/details/106770578
今日推荐