第十章
//第一种代码方式
public class DivByzero { public static void main(String[] args) { Scanner input = new Scanner(System.in);
int x,y;
System.out.println("请输入除数x");
if(input.hasNextInt()) {
x = input.nextInt();
if(x==0) {
System.out.println("除数为零,运算结果无穷大"); } else {
y = 10/x;
System.out.println("10/x的结果为:"); } } else {
System.out.println("你输入的结果不是整数类型!"); }
input.close(); }
使用if else 代码块,除了代码量的增加外还存在以下的缺点:
(1)程序员把大量的精力放在了异常的判断和处理上,没有更多的时间来处理实际的业务代码,降低了开发效率(2)异常代码与逻辑代码融合在一起,降低了程序的可读性,增加了修改和维护的难度(3)使用此代码块穷举的方法,很难把所有的情况都考虑到,程序还不够健壮。更改后:
public class DivByzero_2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int x,y;
System.out.println("输入除数:");
try {
x = input.nextInt();
y = 10/x;
System.out.println("10/x的结果是:"); }catch(Exception ex) {
System.out.println("输入的数字必须是整数类型且不能为0"); }
input.close();
}}
异常类对象包括关于异常的信息类型和错误发生时程序的状态,以及对该错误的详细描述
JAVA,通过API中“Hhrowable类的众多子类"”来描述各种不同的异常,因而JAVA异常都是对象,而Hhrowable子类的实例,描述了出现在一段代码中的错误条件,当条件成立时,错误将发生引发的异常。 Harowable类有两个子类:Exception(异常)类和Error(错误)类。 JAVA,程序用继承的方式来组织各种异常,所有的异常都是Hhrowable或其子类,而类又直接继承object类。 (2)非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类 对于这种异常,JAVA编译器强制要求我们必须对出现的这些异常进行catch并处理,否则程序就不能编译通过。 异常类: 1)Exception类及其子类 可以被捕获,并且可能恢复得异常累,用户程序也可以通过继承Exception类来生成自己的异常类,常见的Exception异常内容下: <1> java. at. AWTException,抽象窗口工具包awt出现异常 <2>JAVA.nio.channels.AlreadyBoundException,尝试绑定已经绑定的网络套,接字时抛出的异常, <3>JAVA.util.zip.DataFormatException,数据格式错误异常 <4>JAVA.ioeofException在向文件写入数据的过程,意外地到达了文件或流操作结尾,这个异常主要用于使用流操作文件,使其他的输入操作时返回值,而不是抛出异常 <5>Java. ion. FileNotFoundException. 试图打开一个指定路径的文件时,引发的异常,当指定路径的文件不存在时而使用FilelnputaStream,FileOutStream或RandomAccessFile构造实力时就会抛出这个异常,如果这个文件确实存在,但是因为某些特殊的原因,如打开一个只读文件进行读写时,也会抛出这个异常。 <6>Java. net. HttpRetryException,当流媒体模式被启动,一个HTTP请求需要重新发送,却无法自动重发,而引发的异常 <7>java. net. MalformedURLException,统一资源定位器URL的格式不正确,引发的异常 <8>java. net. ProtocolException. 网络协议异常 <9>java. net. SocketException,Soket操作异常 <10>java lang. ArithmeticException,算术(如除数为零) 运算引发的异常。 <11>java. lang. ClassCastException. 类型转换异常 <12>java. lang. indexOutOfBoundsException下标越界异常 <13>java. lang. NullPointerException,访问一个空对象中的成员时引发的异常 <14>java. lang. NumberFormatException数据类型转换错误的异常 <15>java. util. InputMismatchException通过Scanner对象数的数据类型与接收数据的类型不匹配,而引发的异常 3java. at. AWTError抽象窗口工具包awt发生严重错误,时而创建的错误信息对
catch代码块类似于方法的声明,包括一个异常类类型和该类型的一个实例,异常类必须是Hharowable类的子类用来指定catch语序要不或者异常异常类对象可以在catch代码块中被调用如调用对象的如调用对象的printStackaTrace().方法将异常信息打印显示到指定的对象中去
上一篇: 初探自动化测试框架(python)第三章——验证码
下一篇: 洛谷 P3372 线段树【模板1】