⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exceptionsolution.java

📁 主要是java书上的一些代码
💻 JAVA
字号:
//: ExceptionSolution.java

//package g3ds.joop.ch5;

import java.io.*;

public class ExceptionSolution{
	public static void main(String[] args) throws IOException{
		//定义3个整型变量用来记录输入值及计算结果
		int dividend=0;
		int divisor=0;
		int result=0;
		
		//创建一个记录字符流的对象,用来读入一行标准输入字符
		BufferedReader in =new BufferedReader(
        	new InputStreamReader(System.in));
        	    
    	//设置一个无限循环,用于多次计算,直到给出结束字符跳出
    	for(;;){	
    		try {
    			//以下为受保护代码,在交互过程可能引发异常
    			System.out.print("请输入整型被除数:");
    			dividend=Integer.parseInt(in.readLine());
    	
    			System.out.print("请输入整型除数:");
    			divisor=Integer.parseInt(in.readLine());
			
				result=dividend/divisor;
				System.out.println("结果:("+dividend+"/"+divisor+")="+ result);
			} 
			//对除数为0引发的ArithmeticException异常进行回应
			catch(ArithmeticException e) {
				//处理异常时给出便于理解的、最直截了当的提示
				System.out.println("对不起!您的输入有误:除数为0");
				
				//也可以直接输出和异常有关的信息,但对用户来说这些内容过于抽象
				//e.printStackTrace(System.err);
			} 
			//对类型转换过程引发的NumberFormatException异常进行回应
			catch(NumberFormatException e){
				//处理异常时给出便于理解的、最直截了当的提示
				System.out.println("对不起!您的输入有误:除数或被除数不是整型数");
				
				/*
				//也可以直接输出和异常有关的信息,但对用户来说这些内容过于抽象
				//直接输出错误点向上的异常信息
				System.out.println("利用printStackTrace方法直接输出堆栈信息:");
				e.printStackTrace(System.err);
				
				//或者利用getStackTrace方法返回这些堆栈信息,调试时可以得到更多的信息
				System.out.println("利用getStackTrace方法返回堆栈信息:");
				StackTraceElement ste[] = e.getStackTrace();
				for(int i=0; i<ste.length; i++){
					System.out.println("异常产生在 "+ ste[i].getClassName() +" 类的 "+
						ste[i].getMethodName()+" 方法");
					System.out.println("在 "+ste[i].getFileName()+" 文件中的"+
						"第 "+ste[i].getLineNumber()+" 行");
				}
				System.out.println("错误原因: "+e.getMessage());
				*/
			} 
			//以防万一,对可能引发的意想不到的异常进行回应
			catch(Exception e){
				//处理异常时给出便于理解的、最直截了当的提示
				System.out.println("对不起!操作出现故障:请重新试试");
				
				//也可以直接输出和异常有关的信息,但对用户来说这些内容过于抽象
				//e.printStackTrace(System.err);
			}

			System.out.print("继续计算[是(Y)/否(N)]: ");
			
			//给出强制退出循环的条件
			if(!new String(in.readLine()).trim().equalsIgnoreCase("Y"))
				break;
		}
	}
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -