Java核心(异常处理-异常2 )

一、Java 常见异常

    在 Java 中提供了一些异常用来描述经常发生的错误,其中,有的需要程序员进行捕获或声明抛出,有的是有 Java 虚拟机自动进行捕获处理的。  

常见的异常类
异常类说明
ClassCastException类型转换异常
ClassNotFoundException未找到相应类异常
ArithmeticException算术异常
ArrayIndexOutOfBoundsException数组下标越界异常
ArrayStoreException数组中包含不兼容的值抛出的异常
SQLException操作数据库异常类
NullPointerException空指针异常
NoSuchFieldException字段未找到异常
NoSuchMethodException方法未找到抛出的异常
NumberFormatException字符串转换为数字抛出的异常
NegativeArraySizeException数组元素个数为负数抛出的异常
StringIndexOutOfBoundsException字符串索引超出范围抛出的异常
IOException输入输出异常
IllegalAccessException不允许访问某类异常
InstantiationException

当应用程序试图使用 Class 类中的 newInstance() 方法创建一个类的实例,

而指定的类对象无法被实例化时,抛出该异常

EOFException文件已结束异常
FileNotFoundException文件未找到异常

二、自定义异常

    使用 Java 内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户只需继承 Exception 类即可自定义异常类。

    在程序中使用自定义异常类,大体可分为以下几个步骤:

    ( 1 ) :创建自定义异常类。

    ( 2 ) :在方法中抛出通过 throw 关键字抛出异常对象。 

    ( 3 ) :如果在当前抛出异常的方法中处理异常,可以使用 try - catch 语句块捕获并处理,否则在方法的声明处通过 throw 关键字指明要抛出给方法调用者的异常,继续进行下一步操作。

    ( 4 ) :在出现异常方法的调用者中捕获并处理异常。

    eg : 创建自定义异常。在项目中创建类 MyException ,该类继承 Exception 。

public class MyException extends Exception{        //创建自定义异常,继承 Exception 类
    public MyException(String ErrorMessage){        //构造方法
        super(ErrorMessage);        //父类构造方法
    }
}
    字符串 ErrorMessafe 是要输出的错误信息。若想抛出用户自定义的异常对象,要使用 throw 关键字。

    eg : 在项目中创建类 Tram,该类中创建一个带有 int 型参数的方法 avg() ,该方法用来检查参数是否小于 0 或大于 100 。如果参数小于 0 或大于 100 ,则通过 thorw 关键字抛出一个 MyException 异常对象,并在 main() 方法中捕获该异常。

package com.myException;

public class Tran {        //创建类
    //定义方法,抛出异常
    static int avg(int number1,int number2) throws MyException{
        if(number1 < 0 || number2 < 0) {        //判断方法中参数是否满足指定条件
            throw new MyException("不可以使用负数");        //错误信息
        }
        if(number1 > 100 || number2 > 100) {        //判断方法中参数是否满足指定条件
	    throw new MyException("数值太大了");        //错误信息
        }
        return (number1 + number2)/2;        //将参数的平均值返回
    }
	
    public static void main(String[] args) {        //主方法
        try {        //try 代码块处理可能出现异常的代码
            int result = avg(102, 150);        //调用  avg() 方法
            System.out.println(result);        //将 avg() 方法的返回值输出
        } catch (Exception e) {
            System.out.println(e);        //输出异常信息
        }
    }
}
class MyException extends Exception{        //创建自定义异常,继承 Exception 类
    public MyException(String ErrorMessage) {        //构造方法
        super(ErrorMessage);        //父类构造方法
    }
}

    运行结果为 :

com.myException.MyException: 数值太大了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值