JavaSE第六章.异常

异常概述

Java在编译或运行或者运行过程中出现的错误

程序错误分为三种:1.编译错误;2.运行时错误;3.逻辑错误。
(1)编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置,这个也是大家在刚接触编程语言最常遇到的问题。
(2)运行时错误是因为程序在执行时,运行环境发现了不能执行的操作。
(3)逻辑错误是因为程序没有按照预期的逻辑顺序执行。异常也就是指程序运行时发生错误,而异常处理就是对这些错误进行处理和控制。

结构 :
img

异常类型

Error

程序中无法处理的错误,由jvm生成并抛出,例如JVM系统内部错误、资源耗尽等(栈溢出) OOM

Exception

程序本身可以处理的异常,编程错误问题,可以进行处理。分运行时异常和非运行时异常

RuntimeException 运行时异常(非检查性)
  • NullPointerException:空指针异常
  • IndexOutOfBoundsException:下标越界
  • NumberFormatException:数字格式化异常
  • ClassCastException:类类型转换异常
  • ArithmeticException:算数异常
  • ParseException:解析异常
  • ConcurrentModificationException:并发修改异常
        int[]a ={1,2,3};
        a[3] = 10;		//java.lang.ArrayIndexOutOfBoundsException数组下标越界异常

        String str ="abc";
        str.charAt(3);		//java.lang.StringIndexOutOfBoundsException字符串下标越界异常

        Integer.parseInt("a");		//java.lang.NumberFormatException数字格式化异常

        String str = null;
        str.length();		//java.lang.NullPointerException空指针异常

        Object obj = "abc";
        Integer i = (Integer) obj;  //java.lang.ClassCastException类类型转换异常

        System.out.println(10/0);   //java.lang.ArithmeticException算数异常

        new SimpleDateFormat("").parse(""); //ParseException解析异常
非运行时异常 (检查性)
  • IOException
  • SQLException
  • ClassNotFoundException 类找不到异常
"a".getBytes("utf-8");  //java.io.UnsupportedEncodingException不支持的编码异常

异常处理

img

try{}catch{}finally{}

  try {
      可能出现异常的代码
  }catch(异常类型  e  用来接收抛出的异常对象){
         捕获处理发生的异常
  }finally{
          无论是否出现异常,代码都会执行
  }
   后续程序继续执行
    public static void main(String[] args) {
        System.out.println(test());
    }
    public  static int test(){
        try {
            int a = 10;
            int b = 2;
            int c = a / b;
            return c;
        }catch (ArithmeticException e){
            System.out.println("运算错误");
            return -1; //即使return了 也会执行finally代码块
        }finally {
            System.out.println("cccccccccccccccccc");//IO   jdbc
            return 0;
        }
    }

throw & throws

  • throw:作用在方法内,是人为抛出一个实际的异常对象,使用throw后,要么使用try catch捕获异常,要么使用throws声明异常
  • throws:作用在方法的声明上,声明这个方法会抛出会某种类型的异常,调用时必须处理异常,可以是多个

finally & return

  • 在 try块中即便有return,break,continue等改变执行流的语句,finally也会执行
  • finally中的return或异常会抑制(消灭)前面try或者catch块中的异常。

自定义异常

当Java内置的异常都不能明确的说明异常情况的时候,需要创建自己的异常。

  1. 创建异常类继承Exception
  2. throw new TriangleException(“三角形构成异常”);
//定义三个整数变量a,b,c 判断能否构成一个三角形,如果不能请抛出一个自定义异常
//三角形类
public class Triangle {
    private int a;
    private int b;
    private int c;

    Triangle(int a,int b,int c){
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public void isTri() throws TriangleException {
        if (a+b>c&&a+c>b&&b+c>a){
            System.out.println("能构成三角形");
        }else{
            throw new TriangleException("三角形构成异常");
        }
    }
}

//自定义异常
public class TriangleException extends Exception{
    public TriangleException() {
        super();
    }
    public TriangleException(String message) {
        super(message);
    }
}

public class TriangleText {
    public static void main(String[] args) {
        try {
            Triangle triangle  = new Triangle(10,20,31);
            triangle.isTri();
        }catch (TriangleException e){
            System.out.println("不能构成三角形");
            e.printStackTrace();
        }
    }
}
----------------------------------------------------------
不能构成三角形
IO.TriangleException: 三角形构成异常
at IO.Triangle.isTri(Triangle.java:18)
at IO.TriangleText.main(TriangleText.java:7)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EnndmeRedis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值