首页 > 代码库 > 异常:异常的分类;获取异常及处理;抛出异常

异常:异常的分类;获取异常及处理;抛出异常

Throwable是所有异常当然超类!该类的两个直接子类是Error和Exception。

Eroor:JAVA运行时的内部错误以及资源耗尽错误,很难恢复!

Exception:可以简单分为两类:1.RuntimeException:运行异常;2.非RuntimeException:由环境因素导致的;

异常的处理以及获取异常:

try{

在这里面放入可能出错的函数

}catch(Exception e){

处理方法

}finally{

无论是否出错都会执行此代码

}

在catch中我们一般会写Exception捕获所有异常

当try中出现异常后,代码会立即执行catch中的代码,在这里如果要打印异常信息的话,我们会调用e.getMassage();或者直接调用e.printStackTrace()方法,此方法直接打印异常

例1:当输入的是字符串或者出入的是0时,都会出现异常。所以在调用ShuRu方法是必须try{}catch{};如果不想try{}catch{}的话,就必须要在之前声明一下抛出此异常(throws Exception),然后谁调用这个方法谁来处理!

package com.inba.maya.huoquyichang;

import java.util.*;

public class HuoQuYiChang {
    public static void main1(String[] args){
        HuoQuYiChang h=new HuoQuYiChang();
        try{
            h.ShuRu();
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }
    
    public void ShuRu() throws Exception{
        System.out.println("请输入:");
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        int num=Integer.parseInt(s);
        
        double z=100/num;
        System.out.println(z);
    }
    
}

例2:

package com.inba.maya.huoquyichang;

import java.util.*;

public class HuoQuYiChang {  
    public static void main2(String[] args){
        int num=0;
        System.out.println("请输入:");
        try{
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        num=Integer.parseInt(s);
        }catch(Exception e){
            System.out.println("输入的必须是数字    "+e.getMessage());
            throw e;
        }
        double z;
        try{
            z=100/num;
        }catch(Exception e){
            System.out.println("输入的不能是0   "+e.getMessage());
        }
    }
}

异常使用的原则:

1.不要过多的使用异常,这样会见中系统的负担。

2.在方法中使用try{}catch{}语句块捕获异常时,必须要对异常做处理。

3.try{}catch{}语句块的范围不要太大,这样不利于对异常的分析。

4.一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或者子异常

异常:异常的分类;获取异常及处理;抛出异常