java异常处理

今天刚刚做完一个java实验报告,主要是关于java异常处理的,所以小周周就顺便总结一下吧。

问题描述

编写一个计算N个整数平均值的程序。程序应该提示用户输入N的值,如何必须输入所有N个数。如果用户输入的值是一个负数,则应该抛出一个异常并捕获,提示“N必须是正数或者0”。并提示用户再次输入该数。

因为这个不是算法题,所以也没什么需要注意的,所以小周周就不分析了,我们直接上代码吧

实验代码

import java.util.*;
public class Illegal2 {
     
	public static void main(String[] args) {
     
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个整数N,表示你要求的N个数的平均值");
		int n = s.nextInt();
		int N=n;
		double sum=0;
		while(n>0) {
     
			try {
     
				System.out.println("请输入第"+(N-n+1)+"个数");
				int x = s.nextInt();
				if(x<0) {
     
					throw new IllegalShu();
				}
				sum+=x;
				n--;
			}catch(Exception e) {
     
				System.out.println("N必须是正数或者0,请再次输入该数");
			}
		}
		System.out.println("这"+N+"个数的平均数是:"+ sum / N);
	}
}
class IllegalShu extends Exception{
       //自定义异常类,必须继承Exception类或者其子类
	public IllegalShu() {
     
		
	}
	public IllegalShu(String mes) {
     
		super(mes);
	}
}

运行结果

数据测试 输入8个数 分别是 8,-7,7,6,-5,5,4,3,-2,2,1
这里输入了11个数,因为有3个是负的,所以重新输入那个数,所以就有了11个数。
java异常处理_第1张图片

实验总结

我们来总结一下java的异常处理吧。
对于异常处理,主要有以下几类,Error、Exception两类。Exception包括RuntimeExcepion运行时异常(除数为0,、数组下标越界、空指针、)和CheckedException已检查异常(IOException、SQLException、用户自定义异常)。运行时异常用户可不必对其处理。已检查异常在编译时就必须做出处理,否则无法通过编译。
以下需要特别注意:
用户自定义异常类必须继承Exception类或Exception类的子类,且包含两个构造函数,一个是默认构造函数(例如代码块中的public IllegalShu() {}),另一个是带有详细信息的构造函数(代码块中的public IllegalShu(String mes) {super(mes);})。
异常处理方式:
1.捕获异常:try-catch-finally 用try来执行一段程序,如果出现异常,系统将抛出一个异常,可以通过他的类型来捕捉(catch)并处理,最后一步是通过finally语句来为异常处理提供一个出口,不管是否有异常,finally里的代码都要被执行,且finally语句最多只有一条。
执行顺序
有异常时:try–catch—finally;
没有异常:try–finally
2.声明异常(throws子句)
有些时候并不需要用 try-catch-finally 来处理异常,或者出现异常不知道怎么处理,这时候我们就可以向上传递给调用它的方法来处理,在方法的首部声明该方法可能抛出异常就行。

好啦,关于java的异常处理小周周就给大家分享到这了,如果有什么不足,希望大家踊跃留言分享,一起学习,一起进步。
【无名之辈 我是谁 小小的天 也有大大的梦想】

你可能感兴趣的:(笔记,java)