20200321——java中的异常

异常写过了好几篇博客。
总结好几次没到位。
java异常的分类
异常的顶级父类是Throwable。
其在分为error与exception两个类。

**error **
error称之为错误,代表了JVM中的错误,错误不能被程序员通过代码处理,Error很少出现,所以我们主要关心与Exception下面的异常

Exception
Exception是java异常的核心。
我们主要是处理Exception这个异常

根据上面两种异常,我们可以根据其分成两类
非检查异常
Error和RuntimeException以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try…catch…finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码,而不是去通过异常处理器处理 。这样的异常发生的原因多半是代码写的有问题。如除0错误ArithmeticException,错误的强制类型转换错误ClassCastException,数组索引越界ArrayIndexOutOfBoundsException,使用了空对象NullPointerException等等。

检查异常
除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着。如SQLException , IOException,ClassNotFoundException 等。
如果不进行检查,编译器将不会通过编译器

可以通过编译期,但是在运行阶段就会报错,除数为0

package Exception;

/**
 * @Classname Calcuate
 * @Description TODO
 * @Date 2020/3/21 12:23
 * @Created by mmz
 */
public class Calcuate {
    public static void main(String[] args) {
        System.out.println("欢迎来到计算器");
        int a = 1/0;
        System.out.println(a);
    }
}

如何进行处理呢?

package Exception;

/**
 * @Classname Calcuate
 * @Description TODO
 * @Date 2020/3/21 12:23
 * @Created by mmz
 */
public class Calcuate {
    public static void main(String[] args) {
        System.out.println("欢迎来到计算器");
        try{
            int a = 1/0;
            System.out.println(a);
        }catch (Exception e){
            System.out.println("a的除数为0,请重试");
        }

    }
}

使用try/catch块

关于throw与throws
throw就是简单抛出一个异常语句

throws就是不处理异常抛给调用放来处理异常

public static void function() throws NumberFormatException{ 
	    String s = "abc"; 
	    System.out.println(Double.parseDouble(s)); 
	  } 
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try { 
		      function(); 
		    } catch (NumberFormatException e) { 
		      System.err.println("非数据类型不能转换。"); 
		      //e.printStackTrace(); 
		    } 
 
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值