Java-异常处理详解

1.Java异常:在程序运行过程中,如果JVM检测出一个不可能执行的操作,就会出现执行时的错误.例如数组下标越界、以0作为除数.异常是运行错误。而运行时错误会作为异常抛出,异常就是一种对象,表示阻止正常运行的错误或者情况。如果异常没有被处理,那么程序就会异常终止。所以我们要学习怎么样处理异常,以使程序可以继续运行或者优雅地终止.

2.异常处理的规范:异常应该从方法抛出,而由方法的调用者来捕获和处理该异常,以至于调用者决定是否终止程序.

import java.util.Scanner;

public class DriverExceptionTest {
    public static int quotient(int number1,int number2){
        if(number2==0){
            throw new ArithmeticException();//如果程序运行错误则会抛出异常
        }
        return number1/number2;
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int int1 = scanner.nextInt();
        int int2 = scanner.nextInt();

        try{
            int result = quotient(int1, int2);//调用方法
            System.out.println("结果为:"+result);
        }catch (ArithmeticException ex){//接受异常,自己定义进行下一步处理
            System.out.println("不能输入除数为0");
        }
        System.out.println("程序结束");
    }
}

3.因此使用异常处理的优点就是:它能使方法抛出一个异常给它的调用者,并由调用者处理该异常.

4.异常类通常有三种类型:系统错误,异常和运行时的错误.

 4-1.系统错误使用Java虚拟机抛出的,用Error类表示。Error类描述的是内部系统错误。这样的错误很少发生,如果发生,除了通知用户以及尽量稳妥地终止程序外,几乎什么都不能做,如LinkageError,VirtualMachineError.
 
 4-2 异常是用Exception类表示的,它描述的是你的程序和外部环境所引起的错误,这些错误能被程序捕获和处理.如ClassNotFoundException,IOException.

4-3 运行时异常是用RuntimeException类来表示的,它描述的是程序设计错误,例如错误的类型转换、访问一个越界数组或数值错误。运行时异常通常表示编程错误.如ArithmeticEception(一个整数除以0)、NullPointerException(试图通过一个null引用变量访问一个对象)...

5.RuntimeException、Error以及它们的子类都称为免检异常。所有其它的异常都称为必检异常(意味着编译器会强制程序员检查并通过try-catch处理它们.

6.从异常中获取消息:最常用的就是ex.printStackTrace():意味着在控制台上打印Throwable对象和它的调用栈的跟踪信息.

import java.util.Scanner;

public class DriverExceptionTest {
    public static int quotient(int number1,int number2){
        if(number2==0){
            throw new ArithmeticException();//如果程序运行错误则会抛出异常
        }
        return number1/number2;
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int int1 = scanner.nextInt();
        int int2 = scanner.nextInt();

        try{
            int result = quotient(int1, int2);//调用方法
            System.out.println("结果为:"+result);
        }catch (ArithmeticException ex){//接受异常,自己定义进行下一步处理
            System.out.println("不能输入除数为0");
            ex.printStackTrace();//使用printStackTrace()方法进行追踪

        }
        System.out.println("程序结束");
    }
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值