JAVA异常处理

一、 概述

  异常处理是基于面向对象的一种运行错误处理机制,通过对异常问题的封装,实现对用户的非法操作、参数设置异常,硬件系统异常,网络状态改变异常等运行态中可能出现的异常信息的处理机制。
  组成结构:类型,提示,行号。

二、继承结构

Throwable - 顶级父类
-- Error:系统错误,无法修复
-- Exception:可修复的错误
      -- RunTimeException
              --ClassCastException
              --ClassNotFoundExceptio

三、异常处理

  程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出。

1.捕获

  异常捕获的语法为try,catch,finally。程序首先执行try中的代码,当满足catch中的异常情况时执行catch中的代码,catch可以有多个,最后执行finally中的代码,进行最后的清理工作,如关闭数据库连接等。

public class Test_Exception {
    public static void main(String[] args) {
       method();
    }
    
    //除法运算
    //1、接收键盘输入的两个整数,并做除法运算
    private static void method() {
       
       //异常的处理1:捕获,可以catch多次也可以直接捕获Exception
       try {
           int a = new Scanner(System.in).nextInt();
           int b = new Scanner(System.in).nextInt();
           
           System.out.println(a/b);
       }catch(ArithmeticException a) {
       //前提:当抛出的错误是ArithmeticException类型时,才会被catch住
           System.out.println("您输入的分母为0了!");//解决方案
       }catch(InputMismatchException i) {
    //前提:当抛出的错误是InputMismatchException类型时,才会被catch住
           System.out.println("请输入整数!");//解决方案
       }catch(Exception e) {
    //!!!多态的表现形式(不要求具体子类是谁):每种异常都能被捕获
           System.out.println("您输入有误!");//解决方案
       }
       
    }
    
}

2.抛出

  当调用了一个抛出异常的方法时,调用位置可以不做处理继续向上抛出也可以捕获异常。

//测试异常的处理
//1、捕获的方式,在方法里会报错的代码上加try..catch
//2、抛出的方式,在方法上加throws关键字,谁调用谁处理
public class Test_Exception {
    public static void main(String[] args) throws Exception {
       method();//捕获的方式,在方法里会报错的代码上加try..catch
       method2();//抛出的方式,在方法上加throws关键字
       //调用了一个抛出异常的方法,解决方案:要么抛要么捕获
    }
    
    //抛出的方式:throws,交给调用者处理
//  private static void method2() throws 
//            ArithmeticException,InputMismatchException{
    private static void method2() throws Exception{
       int a = new Scanner(System.in).nextInt();
       int b = new Scanner(System.in).nextInt();
       
       System.out.println(a/b);
    }
 
    //捕获的方式:try..catch
    //1、接收键盘输入的两个整数,并做除法运算
    private static void method() {
       
       //异常的处理1:捕获,可以catch多次也可以直接捕获Exception
       try {
           int a = new Scanner(System.in).nextInt();
           int b = new Scanner(System.in).nextInt();
           
           System.out.println(a/b);
       }catch(ArithmeticException a) {
           //前提:当抛出的错误是ArithmeticException类型时,才会被catch住
           System.out.println("您输入的分母为0了!");//解决方案
       }catch(InputMismatchException i) {
           //前提:当抛出的错误是InputMismatchException类型时,才会被catch住
           System.out.println("请输入整数!");//解决方案
       }catch(Exception e) {
           //多态的表现形式(不要求具体子类是谁):每种异常都能被捕获
           System.out.println("您输入有误!");//解决方案
       }
       
    }
    
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值