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
- Java入门学习-学会try/catch/throw的用法。做出一个计算器除法功能,除以0时程序必须给出提示。
- Java入门学习-学会Scanner的用法。做出一个计算器加法功能。
- try catch throw用法
- try catch throw用法
- try catch throw用法
- try catch throw用法
- try catch throw用法
- try catch throw用法
- try catch throw用法
- try catch throw用法
- try catch throw用法
- c++学习笔记--一个简单的 try-catch-throw
- js中try/catch/throw的用法
- try catch 以及 throw 的用法
- Try throw catch 的一个问题
- java throw throws try catch
- C++——try、throw、catch实例学习程序
- 全面try-catch-finally外加throw的用法
- [Python]浅拷贝与深拷贝
- 剑指offer--二叉搜索树的后序遍历序列
- 【mark】QQ 探测,爬取网页内容
- [数学期望]BZOJ 1415
- adc驱动实例(工作队列+等待队列+设备树+属性文件)
- Java入门学习-学会try/catch/throw的用法。做出一个计算器除法功能,除以0时程序必须给出提示。
- 字符串匹配
- 大数据时代的小数字感:数据再有价值,别人听不懂照样没用
- Unity3DGame学习笔记(6):粒子系统
- 集合框架-统计字符串中每个字符出现的次数案例图解
- JavaScript中的运算符
- 1024: 求1+2!+3!+...+N!的和
- 五一假第三天
- 基于DSP28335的3KW单相光伏并网逆变实验台的搭建