IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java全栈系列之JavaSE-面向对象(异常详解)043 -> 正文阅读

[Java知识库]java全栈系列之JavaSE-面向对象(异常详解)043

Exception可以被程序处理的异常

异常指的是程序在运行中出现了无法预料的状况,异常发生在程序运行期间。程序中可以选择捕获异常,也可以不处理使用默认的异常

算术异常

通常是由于算术计算错误导致的

public class Gui003 {
    public static void main(String[] args) {
        //算术异常
        int i=0;
        int x=100;
        System.out.println(x/i);
    }
}
Exception in thread "main" java.lang.ArithmeticException

异常统分为两类:运行时异常和非运行时异常

常见的运行时异常:
在这里插入图片描述

异常框架

在这里插入图片描述

异常处理机制

  • 抛出异常
  • 捕获异常

处理异常的5个关键字

try catch finally throw throws

try监控代码块中的异常

try {
   System.out.println(x/i);			//监控代码块中的内容
}

catch在try代码块之后用于捕获异常

catch(ArithmeticException e){		
//捕获ArithmeticException异常,出现异常时则执行下方代码块中的内容
            System.out.println("算术异常");
}

捕获异常,0不能作为被除数,所以100除以0会出现异常错误

在这里插入图片描述
手动捕获异常抛出

        int i=0;
        int x=100;
        try {
            System.out.println(x/i);
        }catch(ArithmeticException e){
            System.out.println("算术异常");
        }

执行结果:

算术异常

finally关键字

finally在catch代码块之后,finally无论程序出不出异常都会执行finally代码块中的内容

finally {
           System.out.println("执行finally");
}

执行结果:

执行finally

如下定义数组长度为6,输出下标为6的元素

public class exception {
    public static void main(String[] args) {
        int [] IntArray={1,23,45,6,7,46};
        System.out.println(IntArray[6]);
    }
}

提示下标越界异常
在这里插入图片描述
手动捕获异常

public class exception {
    public static void main(String[] args) {
        int [] IntArray={0,23,45,6,7,46};
        try {
            System.out.println(IntArray[6]);

        }catch (ArrayIndexOutOfBoundsException E1){
            System.out.println("数组下标越界");
        }
        try {
            System.out.println(IntArray[5]/IntArray[0]);
        }
        catch (ArithmeticException E2){
            System.out.println("被除数不能为0");
        }

    }
}

catch可以捕获多个异常,catch也相当于if else增增递进

int [] IntArray={0,23,45,6,7,46};
        try {
            System.out.println(IntArray[6]);

        }catch (ArrayIndexOutOfBoundsException E1){
            System.out.println("数组下标越界");
        }
        catch (ArithmeticException E2){
            System.out.println("被除数不能为0");
        }

在使用多条异常判断时将异常框架中最大的异常爱放置最下面

package Exception;
public class Ex1 {
    public static void main(String[] args) {
        int [] Array= {1,2,3,4,5};
        try {
            System.out.println(Array[5]);
        }catch (Error error){
            System.out.println("错误Error");
        }catch (ArrayIndexOutOfBoundsException  A){
            System.out.println("数组下标越界");
        }catch (Exception exception){
            System.out.println("异常事项【Exception】");
        }catch (Throwable throwable){
            System.out.println("异常事项【Throwable】");
        }

    }
}

如上将最高级的异常类写置最下

执行结果:

数组下标越界

快捷键Ctrl+Alt+T快速创建
在这里插入图片描述

主动抛出异常

throw和 throws是运行在方法体里面的

如下代码,使用throw抛出异常,当a或b等于0时,抛出错误异常

package Exception;
public class Ex3 {
    public static void main(String[] args) {
        Ex3.Sum(0,2);
    }
    public static int Sum(int a,int b){
        if (a==0||b==0){
            throw new Error();
        }else {
            System.out.println(a / b);
        }     return a+b;
    }
}

执行结果:

Exception in thread "main" java.lang.Error
	at Exception.Ex3.Sum(Ex3.java:8)
	at Exception.Ex3.main(Ex3.java:4)

主动在方法中抛出异常是throw,在方法上是throws

如下方法中定义100/0在方法中抛出异常

package Exception;
public class Ex3 {
    public static void main(String[] args) {
        try {
            new Ex3().Demo();
        }catch (ArithmeticException arithmeticException){
            System.out.println("Ex:算术异常");
        }
    }
    public void Demo() throws ArithmeticException{
        System.out.println(100/0);
    }
}

自定义异常

java中内置的异常类可以描述在编程时大部分的异常情况,除此,用户可以自定义异常,只需继承exception类即可

package Exception;
public class Ex4 {
    public static void main(String[] args) throws ExceptionClass {
            Ex4.Demo(91);
    }
    //定义可能会存在异常的方法
    static void Demo(int a) throws ExceptionClass {
            if(a>=10){
                throw new ExceptionClass(a);
            }else {
                System.out.println(a);
            }    }
}
class ExceptionClass extends Exception{
    private int detail;
    public ExceptionClass( int a) {
        this.detail = a;
    }
    //打印异常信息
    @Override
    public String toString() {
        return "ExceptionClass{" + "detail=" + detail + '}'+"[您的值大于10]";
    }
}

执行结果:

Exception in thread "main" ExceptionClass{detail=91}[您的值大于10]
	at Exception.Ex4.Demo(Ex4.java:9)
	at Exception.Ex4.main(Ex4.java:4)

自定义异常类手动抛出

package Exception;
import java.util.Scanner;
public class Ex5 {
    public static void main(String[] args) throws MyExceptionClass {
        Scanner scanner =new Scanner(System.in);
        System.out.print("请输入数字:");
        int num= scanner.nextInt();
        if (num==0){
            throw new MyExceptionClass(num);
        }else if (num >10){
            throw new MyExceptionClass(num);
        }else {
            System.out.println("数字是"+num);
        }

    }
}
class Ex{

}
class MyExceptionClass extends Exception{
    private int number;
    public MyExceptionClass(int i) {
        this.number=i;
    }
    @Override
    public String toString() {
        return "MyExceptionClass{"+"number="+number+'}';
    }
}

执行结果:

请输入数字:11
Exception in thread "main" MyExceptionClass{number=11}
	at Exception.Ex5.main(Ex5.java:11)

请输入数字:4
数字是4

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 01:24:15  更:2021-08-17 01:24:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 23:37:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码