Java入门学习-学会try/catch/throw的用法。做出一个计算器除法功能,除以0时程序必须给出提示。

来源:互联网 发布:oppo应用分身软件 编辑:程序博客网 时间:2024/06/05 16:44

一、try/catch/throw含义理解

因为程序运行着,可能会产生一些错误,这些错误并不是语法错误(语法错误编译器会识别提示),而是到了特定的操作就是产生。
所以需要引入try/catch/throw,
try相当于是监控区域,在try{}块里尝试着各种可能产生异常的调用。
当try里抛出了异常后,就需要catch处理这个异常,如果有多种异常,则可以写多个catch语句。
throw可以直接抛出/产生异常,导致控制流程转到catch块。主要应用于自定义异常

1.将当前捕获的异常再次抛出:throw e;
2.重新生成一个异常,并抛出:throw new Exception(“some message”);
3.重新生成并抛出一个新的异常,该异常包含了当前异常的信息:throws newException(“some message”,e); 然后用e.getCause()来得到内部异常

二、try/catch/throw语句书写

try{    throw value;}catch(valuetype v){//处理异常}

三、做出一个计算器除法功能,除以0时程序必须给出提示。

import java.util.Scanner;public class temp {    public static void main(String[] args) {        double a,b,c;        System.out.println("请输入第一个数字:");        a=GetDouble();     //该方法会抛出非数字异常        System.out.println("请输入第二个数字:");        b= GetNonZeroDouble(); //该方法会抛出非数字异常和自定义数字不能0异常        c=a/b;        System.out.println(a+"/"+b+"="+c);      }    public static  double  GetDouble() {        double x;        try{            Scanner s=new Scanner(System.in);            x=s.nextDouble();        }catch (Exception e) {            System.out.println("输入非法,请输入数字:");            return GetDouble();        }        return x;    }    public static  double  GetNonZeroDouble() {    //此方法捕获两种异常,所以异常需确定顺序:子类型必须要在父类型之前进行catch。当MyException写在Exception后时,会报错:    //Unreachable catch block for MyException. It is already handled by the catch block for Exception    //catch与分支逻辑是一致,如果父类型先被catch,那么后被catch的分支根本得不到运行机会。        double x;        try{            Scanner s=new Scanner(System.in);            x=s.nextDouble();            if (x==0) {                throw  new  MyException("被除数不能为0");            }        }catch (MyException e) {            // TODO: handle exception            System.out.println("输入非法:"+e.getMessage()+",请输入非0数字:");            return GetDouble();        }catch (Exception e) {            // TODO: handle exception            System.out.println("输入非法,请输入非0数字:");            return GetDouble();        }        return x;    }}class MyException extends Exception{    public MyException(String message) {        super(message);    }}
0 0
原创粉丝点击