java中的异常处理

java中的异常处理

java异常是Throwable子类的实例化对象。Throwable包含两个重要子类:Exception(异常)和Error(错误)。其中Error是不可查的,所以当出现Error时,一般是不需要去处理的。相比于Error类,Exception是程序设计者可以处理的部分

Exception异常

这种异常分为两类,一类是编译时异常,另一类是运行时异常(RuntimeException)。在java中除了RuntimeException以外的其它所有异常都是属于编译异常,也就是非运行时异常。

对于异常的处理

可以选择抛出(throws)或者try-catch-finally来捕捉。try-catch-finally是将程序的业务功能放在try语句块中,尝试是否可以顺利通过,将异常的代码放在catch语句块中,捕获并处理异常,try-catch协同工作,这是java的异常处理方式。

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Test{
    public static void main(String[] args) {
        FileReader fr = null;
        try {
            File file = new File("pathname");
            fr = new FileReader(file);
            char[] ch = new char[10];
            while(fr.read(ch) != -1 ){
                System.out.println(ch);
            }
        }catch (IOException e ){
            e.printStackTrace();
        }finally {
            if(fr != null){
                try {
                    fr.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

也可以选择用throws来抛出

public class Test{
    public static void main(String[] args) throws IOException{
      File file = new File("pathname");
      FileReader fr = new FileReader(file);
      char[] ch = new char[10];
      while(fr.read(ch) != -1 ){
          System.out.println(ch);
      }
      fr.close;
}

在方法体的后面加上throws + 异常类。在调用这个方法的方法体上也需要加上throws + 异常类。

抛出的异常类可以有多个,用 , 隔开。

自定义异常

public class MyException extends Exception {
    public MyException(){}
    public MyException(String msg){
        super(msg);
    }
}
//这个自定义异常类需要继承Exception类,然后在有参构造内调super()

在我们需要使用自己定义的异常类时,我们需要在通过throw来手动抛出,这个抛出的不是异常类,而是一个异常对象,每一步只能抛出一个异常对象。

public class Test{
     public static void main(String[] args) throws MyException{
         Scanner sc = new Scanner(System.in);
         int temp = sc.nextInt;
         if(temp<0){
             throw new MyException("敲入的数字小于0");  //手动抛出对象
         }else{
             System.out.println("输入值的大小为:"+temp);
         }
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值