Java 简单概括异常类的使用

1.何为异常

程序运行过程中,由于一个不可能执行的操作而导致的程序中断

2.Java中异常
1.一种组织程序正常执行的错误
2.一个特殊的对象,Exception的子类

3.Java中错误

一个合理的应用程序不能截获的严重问题,比如VM(虚拟机)的一个故障
错误也是对象,是Error的子类

异常和错误的区别
1.异常是程序本身可以处理的,是由程序和外部环境所引起的
2.错误是系统本来自带的,一半无法处理也不想需要程序员来处理

4.Java API中异常结构关系

在这里插入图片描述

RuntimeException及其子类的异常都属于免检异常(编译是不解决或抛出这种异常编译不会报错)。
RuntimeException以外的异常,类型上都属于Exception类及其子类,需进行处理。

5.异常处理步骤
1.抛出异常:
当语音限制被违反是,将会抛出(throw)异常,及产生一个异常事件,生成一个异常对象,并把它交给一个运行系统,再由运行系统寻找相应的代码来处理异常
2.捕获异常:
异常抛出后,运行时系统从生成一场对象的代码开始,艳方法的调用栈开始查找,直到找到包含相应处理的方法代码,并把异常对象交给该方法为止。

package exception;

import java.io.IOException;
import java.util.Scanner;

public class Exceptiondemo {

	public static void main(String[] args) {
		try {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入被除数");
		int x = in.nextInt();
		System.out.println("请输入除数");
		int y = in .nextInt();
		int res = divide(x,y);
		System.out.println(res);
		}
//		catch(ArithmeticException e) {
//			System.out.println("除数不能为0");
//			e.printStackTrace();
//		}
		catch(Exception e1) {
			e1.printStackTrace();
		}
		
	}
	public static int divide(int x,int y) {
		return x/y;
	}

}

处理异常方式
1.使用try。。。catch。。。finally语句处理异常
2.使用throws关键字传递异常 并在调用函数是解决异常
以下为用throws关键词抛出异常并在调用函数时捕获并处理异常

package methoud;
class Math{
    public int div(int i,int j) throws Exception{    // 定义除法操作,如果有异常,则交给被调用处处理
        System.out.println("***** 计算开始 *****") ;
        int temp = 0 ;    // 定义局部变量
        try{
            temp = i / j ;    // 计算,但是此处有可能出现异常
        }catch(Exception e){
        }
         System.out.println("***** 计算结束 *****") ;
        return temp ;
    }
};
public class ThisDemo06{
    public static void main(String args[]){
        Math m = new Math() ;
        try{
            System.out.println("除法操作:" + m.div(10,0)) ; //调用函数
        }catch(Exception e){
            System.out.println("异常产生:" + e) ;
        }
    }
};
运行结果:
***** 计算开始 *****
***** 计算结束 *****
异常产生:java.lang.ArithmeticException: / by zero

主方法中也可以抛出异常
如果在主方法的声明也使用了throws关键字呢,那么是不是意味着主方法也可以不处理异常。

class Math{
    public int div(int i,int j) throws Exception{    // 定义除法操作,如果有异常,则交给被调用处处理
        int temp = i / j ;    // 计算,但是此处有可能出现异常
        return temp ;
    }
};
public class ThrowsDemo02{
    // 在主方法中的所有异常都可以不使用try...catch进行处理
    public static void main(String args[]) throws Exception{
        Math m = new Math() ;        // 实例化Math类对象
        System.out.println("除法操作:" + m.div(10,0)) ;
    }
};
运行结果:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at methoud.Math.div(ThisDemo06.java:4)
at methoud.ThisDemo06.main(ThisDemo06.java:12)

throw关键字
throw关键字作用是抛出一个异常,抛出的时候是抛出的是一个异常类的实例化对象,

在异常处理中,try语句要捕获的是一个异常对象,那么此异常对象也可以自己抛出

package methoud;
public class ThisDemo06{
    public static void main(String args[]){
        try{
            throw new Exception("自己抛着玩的。") ;    // 抛出异常的实例化对象
        }catch(Exception e){
            System.out.println(e) ;
        }
    }
};

总结:
在JAVA异常处理机制中,

1)如果抛出的是EXception的类型,则必须进行try …catch进行处理。

2)如果抛出的是RuntimeException的类型,则可以不使用try。。catch处理,一旦发生异常之后,将由JVM处理。

为了保证程序的健康性,在有可能出现异常的时候还是老实使用try …catch处理。
throw与throws关键字联合使用问题。

1)throw:抛出异常。

2)throws:在方法声明处使用,表示此方法不处理异常,而在调用此方法处处理异常。

Exception是必须处理的,而RuntimeException异常是可以不处理的。但是为了保证程序正常运行,最好处理。

如果自定义异常,直接继承异常即可。

注:本篇文章部分代码参考博客[https://www.cnblogs.com/alsf/p/5626384.html]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

就是氧气c

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

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

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

打赏作者

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

抵扣说明:

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

余额充值