Java异常概述及分类

//1.常见异常

package com.mlt.d3_exception;

public class ExceptionDemo {
    public static void main(String[] args) {
        //1.数组索引越界异常:ArrayIndexOutOfBoundsException
        int[] arr={1,2,3};
        System.out.println(arr[1]);
       // System.out.println(arr[3]);//运行出错 程序终止
        //2.空指针异常:NullPointerException.直接输出没用问题,但是调用空指针的变量就会出错
        String name=null;
        System.out.println(name);
        //  System.out.println(name.length());运行出错 程序终止
        //3.类型转换异常:ClassCastExxwption
            Object o =23;
          //  String s = (String) o;运行出错 程序终止
        //4.数字操作异常:ArithmeticException
          //  int a=10/0;  运行出错 程序终止
        //5.数字转换异常:NumberFormatException
        String s1="23a";
        //Integer a =Integer.valueOf(s1);   运行出错 程序终止
        System.out.println();
        System.out.println("程序结束-----");
    }
}

//2 编译时异常

package com.mlt.d5_exception_javac;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExceptionDemo {
    public static void main(String[] args) throws ParseException {//需要解决
        String date="2022-08-01 19:07:22";
        //创建一个简单日期格式化对象
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //解析字符串成为时间对象
        Date d =sdf.parse(date);
        System.out.println(d);
    }
}

//3.默认主线程

package com.mlt.d6_exception_default;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExceptionDemo {
    public static void main(String[] args) throws ParseException {
        System.out.println("程序开始。。。");

        avg(10,0);

        System.out.println("程序结束。。。");
    }
    public static int avg(int a,int b){
        System.out.println(a);
        System.out.println(b);
        int c=a/b;
        return c;
    }
}

//4.可以使用 try catch捕捉

package com.mlt.d7_exception_handle;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExceptionDemo03 {
    public static void main(String[] args)   {
        System.out.println("程序开始。。。");
        //创建一个简单日期格式化对象
        try {
            prase1("2022-08-01 19:07:22");
            System.out.println("成功!");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("失败!");
        }
        System.out.println("程序结束。。。");
    }

public static void prase1(String date) throws Exception {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //解析字符串成为时间对象
        Date d =sdf.parse(date);
        System.out.println(d);
        InputStream is=new FileInputStream("e");

}
}

//5.运行时异常  代码有问题

package com.mlt.d8_exception_runtime;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        //键盘输入 必须是23.5
        Scanner sc =new Scanner(System.in);
        while (true){
            try {
                System.out.println("请输入你的定价!");
                String s= sc.nextLine();
                double d= Double.valueOf(s);
                if (d>0){
                    System.out.println("定价成功!"+d);
                    break;
                }else {
                    System.out.println("定价失败请输入正数!");
                }
            } catch (NumberFormatException e) {
                System.out.println("您输入的格式有误!请输入输入!最好是正数");
            }
        }
    }
}

//6.自定义异常

package com.mlt.d9_exception_custom;

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

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

package com.mlt.d9_exception_custom;

public class AgeRuntimeException extends RuntimeException{
    public AgeRuntimeException() {
    }

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

package com.mlt.d9_exception_custom;

public class ExceptionDemo {
    public static void main(String[] args) {
//        try {
//            checkAge(-34);
//        } catch (AgeException e) {
//            e.printStackTrace();
//        }
        checkAge2(-34);

    }
    private static void checkAge2(int i) {
        //抛出去异常给调用者
        //throw:在方法内部直接创建一个异常对象,并从此点抛出
        //throws:用在方法申明上的,抛出方法内部的异常
        if(i>200||i<0){
            throw new AgeRuntimeException(i+ " is agebaocuo");
        }else {
            System.out.println("执行成功!为"+i);

        }
    }

    private static void checkAge(int i) throws AgeException {
        //抛出去异常给调用者
        //throw:在方法内部直接创建一个异常对象,并从此点抛出
        //throws:用在方法申明上的,抛出方法内部的异常
        if(i>200||i<0){
            throw new AgeException(i+ " is agebaocuo");
        }else {
            System.out.println("执行成功!为"+i);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值