Java-异常

认识异常

异常Exception,是指程序运行时, 由于输入错误、网络、程序逻辑等原因导致运行时出现的问题。出现异常时,程序会暂时中断执行,并根据产生异常的原因,创建对应异常类型的异常对象,并抛出给JVM捕获处理。

Java中的常见异常:

1.NullPointerException:空指针异常

2.ClassNotFoundException:类无法找到异常

3.NumberFormatException:数字格式化异常

4.IndexOutOfBoundsException:下标越界异常

5.IllegalArgumentException:不合法参数异常

6.ClassCastException:类型转换异常

7.SQLException:SQL异常

8.NoSuchMethodException:方法不存在异常

Error:代表的系统级别错误(属于严重问题),也就是说系统一旦出现问题,sun公司会把这些问题封装成Error对象,Error是给sun公司自己用的,因此开发人员不用管它。

Exception:类型的异常是可以在应用程序中进行捕获并处理的,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行。

  • 运行时异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常(如:数组索引越界异常)
  • 编译时异常:编译阶段就会出现错误提醒的。 (如:日期解析异常)

异常处理

  • 第一种:使用throws在方法上声明
public class ExceptionTest {
    public static void main(String[] args) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sdf.parse("2028-11-11 10:24");
        System.out.println(d);
    }
}
  • 第二种:使用try...catch语句块异常进行处理
public class ExceptionTest {
    public static void main(String[] args) throws ParseException{
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date d = sdf.parse("2028-11-11 10:24");
            System.out.println(d);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

自定义异常

先写一个异常类


public class MyException extends Exception{
    public MyException () {
    }

    public MyException (String message) {
        super(message);
    }
}

再写一个测试类,在测试类中定义一个saveAge(int age)方法,对age判断如果年龄不在0~100之间,就抛出一个MyException 异常对象给调用者。

public class ExceptionTest {
    public static void main(String[] args) {
        try {
            saveAge(225);
        } catch (AgeIllegalException e) {
            e.printStackTrace();
        }
    }

    public static void saveAge(int age){
        if(age > 0 && age < 100){
            System.out.println("年龄被成功保存:" + age);
        }else {
            throw new MyException("年龄不在范围内");
        }
    }
}

自定义异常可能是编译时异常,也可以是运行时异常

1.如果自定义异常类继承Excpetion,则是编译时异常。
    特点:方法中抛出的是编译时异常,必须在方法上使用throws声明,强制调用者处理。
    
2.如果自定义异常类继承RuntimeException,则运行时异常。
    特点:方法中抛出的是运行时异常,不需要在方法上用throws声明。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值