四月二十三号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
抛出输入输出异常同样还可以自定义异常
四月二十三号java基础知识的更多相关文章
- 二十三、Java基础--------网络编程
Java中另一个重要技术就是网络编程了,为了更好的学习web方向的知识,有必要对java之网络编程好好学习,本文将围绕网络编程技术进行分析. 常见的网络协议:UDP.TCP UDP 1. 将数据源和目 ...
- 超详细的Java面试题总结(二)之Java基础知识篇
多线程和Java虚拟机 创建线程有几种不同的方式?你喜欢哪一种?为什么? 继承Thread类 实现Runnable接口 应用程序可以使用Executor框架来创建线程池 实现Callable接口. 我 ...
- java基础知识一览(二)
一.java基础知识 1.一个文件中只能有一个public的类,因为他的类名要求和文件名相同. 2.classpath变量可以设置其它目录下的类. 例如:类文件所在目录是:F:\Javajdk,那么没 ...
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java 基础知识总结
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.数据类型: 数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte 8位 (by ...
- Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 毕向东—Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- Java 基础知识总结1
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.数据类型: 数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte 8位 (by ...
- java基础知识小小结
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
随机推荐
- PTA1004 成绩排名 (20 分)
PTA1004 成绩排名 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 ...
- 5vue 样式绑定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Unity 转小游戏
填写appid 和游戏资源位置 在导出的项目里可以修改游戏资源位置 两个目录 minigame 是小程序打开的目录 webgl 是要下载的的资源 下载一个http 服务器就有了 和JS交互 大部分js ...
- php【websocket】
在PHP中,开发者需要考虑的东西比较多,从socket的连接.建立.绑定.监听等都需要开发者自己去操作完成,对于初学者来说,难度方面也挺大的.下面就简单介绍一下,可供参考 一.socket协议的简介 ...
- 批量cp时中断,原来是被cp的alias干扰了
背景 批量复制一批数据的质控结果的时候,由于表格中出现一个重复项,导致卡在是否覆盖的提示这里 结果该重复项之后的样本都没有复制成功,差点就漏掉一部分样本啊-- cat ../sampleList|wh ...
- vscode配置c++环境(超简单)
vscode配置c++环境(超简单) 超简单!!! 配置c++最麻烦的就是mingw的环境,有很多不同的版本,很杂乱,这里我们用最简单的办法展示. 下载一个devc++. 如果你问我,为什么下了dev ...
- Javascript 事件派发 dispatcher
基本使用 基础事件 let event = new Event("click") //新建click事件 node.addEventListener("click&quo ...
- (Linux)不挂断启动进程
环境:腾讯云Ubuntu x86_64 问题:在配置应用时,需要让他后台启动,关闭ssh连接也要可以保持后台运行 解决办法: 1.使用nohup 参考链接:https://zhuanlan.zhihu ...
- Leecode 160.相交链表(Java 哈希表、双指针 两种方法)
找两个链表第一次指针相同的地方 想法:(本来是没有的,因为没读懂题目描述= =) 1.两个指针,长的先走(长减短相差的长度)这么多的步数,然后就可以开始比较指针,直到指向为空,期间如果指针相同 ...
- 插入Mybatis教学
------------恢复内容开始------------ 1.Mybatis的CRUD 首先第一点要注意: namespace中的包名称,一定要和mapper接口的包名称要一一对应. 有上面的图可 ...