四月二十三号java基础知识

1.异常是指在程序运行中由代码产生的一种错误
2.按照错误的性质将错误分为语法错、语义错、和逻辑错三种
3.语法错是有由于违反程序设计语言的语言规则而产生的错误,如标识符未标明、表达式中
运算符与操作数类型不兼容、括号不匹配、语句末尾缺少分号。也称为编译错误
编译错误是由于编写的程序代码中存在着语法错误,而未能通过源代码到字节码的编译过程
而产生的错误
语法错误是由语言的编译系统负责检测和报告
4.如果程序在语法中正确,但在语义上存在错误,如输入数据格式错误、除数为0错、给变量
赋值超过允许范围等,这种错误称为语义错。语义错又被称为运行错。
5.这种错误是指不能实现程序员的设计意图和设计功能而产生的错误,所以称为逻辑错
6.程序运行时出的错分为两种:错误和异常。错误是指硬件和操作系统的错误。如内存溢出
,虚拟机错。错误对程序而言是致命的,错误将导致程序无法运行,而程序本身不能处理错误
7.异常是指硬件和操作系统正常时,程序出现错误。有些异常是由于算法考虑不周而引起的
也有些是由于编程过程中疏忽大意而引起的,如运算时除数为0、操作数超过数据范围、数组
下标越界,文件找不到或网络连接中断。
8.在异常层次的最上层有一个单独的类throwable,它是java.lang包中的一个类
Exception子类则是跟供应用程序使用,它是用户程序能够捕捉的异常情况
Exception类有自己的属性和方法,它的构造方法有两种:
1)public Exception();
2) public Exception(String s);
9.Exception类从父类Throwable那里还继承若干方法,常用的有如下两种 :
1)public String toStrng():该方法返回描述当前Exception类信息的字符串
2)public void printStackTrace():该方法没有返回值,它的功能是完成一个输出操作,在
当前的标准输出设备(一般是屏幕显示器)上输出当前异常对象的堆栈使用轨迹,即程序
先后调用并执行了哪些对象或类的哪些方法,使得运行过程中产生咯这个异常对象
10.除RuntimeException之外,其他则是非运行时异常,这种异常经常是在程序运行过程中
由环境原因造成的异常,如输入输出异常,网络地址不能打开、文件找不到,这类异常必须在
程序中使用try-catch-finally语句捕获它并进行相应的处理,否则编译不能通过
11.程序对错误和异常的处理方式有三种:一是程序不能处理的错误;二是程序应该避免可以
不去捕获的运行时异常;三是必须捕获的非运行时异常。
12.java.lang.ArrayIndexOutOfBoundsException: 4:数组下标越界异常类
13.一般来说,系统捕获抛出的一场对象并输出相应的信息,同时终止程序的运行,导致其后的
程序无法运行。
即当程序运行到一个错误时,会卡在错误那里,不会再往后面执行
14.try-catch-finally语句捕获或处理一个或多个异常,其格式如下:
try{
要检查的语句;
}
catch{
异常发生时的处理语句序列;
}
finally{
一定会执行的语句序列;
}
“要检查的语句”是可能产生异常的代码;“异常发生时的处理语句序列”是捕获到某种异常
对象时进行处理的代码,catch和后面括号内的“形参对象名”为相应“异常类”的对象,
其中“异常类”指的是由程序抛出的异常对象所属的类;“一定会运行的语句序列”是其
必须执行的代码,无论是否捕获到异常
15.多异常处理:
多异常处理是通过一个try块后面定义若干个catch块来实现的,每个catch块用来接收和处理
一种特定的异常对象
16.能接受是指异常对象与catch后面圆括号中的参数类型相匹配,即catch所处理的异常
与生成的异常对象的类型完全一致或它的祖先类(catch括号中的异常类型应对应所产生的
异常类或该异常的祖先类 )
如果所有的catch都不能与当前的异常对象匹配,则说明当前方法不能处理这个类的异常对象
,程序流程将返回调用该方法的上层方法(回溯上层法)
17.catch(ArrayIndexOutOfBoundsException e)
catch(ArithmeticException e)
catch(Exception e)
变量e的作用是如果捕获到异常,则java会利用异常类创建一个相应的变量e,利用变量便
能进一步提取有关异常类的信息。
18.说明:
1)一场过程中两个判断:一是try程序中是否有异常产生;第二是产生的异常是否和catch
后面的括号内欲捕获的异常类型匹配
2)catch块中的语句根据异常类型的不同而执行不同的操作,比较通用的作法输出异常的
相关信息,包括异常名称,产生异常的方法名
3)由于异常对象与catch块的匹配是按照catch块的先后排列顺序进行的,所以在处理
多异常时应注意认真设计各catch块的排列顺序。一般的将具体的、较常见的异常的catch块
放在前面,而可以与多种异常类型相匹配的catch块应放在较后面的位置。
4)若将子类异常的catch语句块放在父类异常catch语句块的后面,则编译不能通过。
5)当在try块中的语句抛出一个异常时,其后的代码不会执行。所以可以通过finally语句块
来为异常处理提供一个统一的出口,使得流程跳转到程序的其他部分以前能够对程序的状态
做统一的管理,所以finally语句块中经常用于对一些资源做清理工作,如关闭打开得的文件
6)finally块是可以省略的,若省略finally块,则在catch块结束后,程序跳转到try-catch块
之后的语句继续执行
7)当catch块中含有System.exit(0)语句时,则不能执行finally块中的语句,程序直接终止;
当catch中含有return语句时则执行完finally鱼护后在终止程序。
19.抛出异常的方法:
1)系统自动抛出的异常;
2)指定方法抛出的异常;
20.抛出异常的方法:
方式一:在方法体内使用throw语句抛出异常对象。其语法格式为:
throw 由异常所产生的的对象;
其中“由异常类所产生的的对象”是一个从Throwable派生的异常类对象
方式二:在方法头部添加throws子句表示方法将抛出异常 。带有throws子句的方法声明格式:
[修饰符] 返回值类型 方法名([参数列表])throws 异常类列表
其中,throws是关键字,“异常类列表”是方法要抛出的异常类,当异常类多于一个的时候
要用“,”隔开
21.说明:通过这两种方式抛出异常,在方法中不必编写try-catch-finally程序段,而交由
调用该方法的程序来处理 。当然这两种情况下,也可以再本方法中用try-catch-finally语句
来处理异常
22.处理异常的方法:
当异常抛出后,方法内没有处理异常的语句,便通过回溯向上法往上面抛,一层层不能解决
直至到JVM处理。也就是说如果某个方法声明抛出异常,则调用它的方法必须捕获并处理异常
否则会出现错误
23.e.printStackTrace();//输出当前异常对象的对战使用轨迹,即指出错误的类型以及错误在
哪一行或者哪几行
24.IllegalArgumentException:求负数阶乘异常
ArrayIndexOutOfBoundsException:数组下标越界异常
NumberFormatException:数据格式异常
NullPointerException:空指针异常
25.if(!Character.isDigit(ch)){//判断参数中字符是否为参数
java.lang.character类的静态方法isDitgit()判断命令行提供的参数中是否全为数字
26.由方法抛出异常交系统处理:
对于需要处理的异常,一般编写try-catch-finally捕获并处理,而对于程序中无法处理的异常
由于系统直接调用的是主方法main(),所以可以在主方法头使用throws子句声明抛出异常
交由系统处理
27.针对IOException类的异常处理,编写的方式有三种
1)直接由主方法main()抛出异常,让java默认的异常处理机制来处理,即若在主方法 main()
内没有使用try-catch语句捕获异常,则必须声明主方法main()头部的后面加上throws
IOException子句。如:
public class Test{
public static void main(String []args)throws IOException{
FileInputStream fis = new FileInputStream("autoexec.bat")}
}
2)在程序代码内编写try-catch语句来捕获由系统抛出的异常,如此则不用指定main()throws
IOException抛出异常类了
3)既在main()方法头的后面使用throw IOException 抛出异常,也可以在程序中使用
try-catch语句来捕获由系统抛出的异常
28. String s = str.toUpperCase();//将str中的内容转换成大写,赋给变量s

总结:今天学习了异常,作为一个程序员我们现阶段在乎如何寻找异常,抛出异常,捕获异常

异常有哪几种,比如数组下标越界,数值格式不对,空指针,负数阶乘异常等等,也学要学会如何定义异常

可以通过在主方法中定义,也可以在自己定义的类里面定义,可以在在主方法头定义异常,通过throws IOException

抛出输入输出异常同样还可以自定义异常 

posted @ 2021-04-23 23:12  求知律己  阅读(99)  评论(0编辑  收藏  举报