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基础知识的更多相关文章

  1. 二十三、Java基础--------网络编程

    Java中另一个重要技术就是网络编程了,为了更好的学习web方向的知识,有必要对java之网络编程好好学习,本文将围绕网络编程技术进行分析. 常见的网络协议:UDP.TCP UDP 1. 将数据源和目 ...

  2. 超详细的Java面试题总结(二)之Java基础知识篇

    多线程和Java虚拟机 创建线程有几种不同的方式?你喜欢哪一种?为什么? 继承Thread类 实现Runnable接口 应用程序可以使用Executor框架来创建线程池 实现Callable接口. 我 ...

  3. java基础知识一览(二)

    一.java基础知识 1.一个文件中只能有一个public的类,因为他的类名要求和文件名相同. 2.classpath变量可以设置其它目录下的类. 例如:类文件所在目录是:F:\Javajdk,那么没 ...

  4. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

  5. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  6. Java 基础知识总结

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  7. Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  8. 毕向东—Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  9. Java 基础知识总结1

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  10. java基础知识小小结

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. Redis集群模式及工作原理

    Redis有三种集群模式:主从模式.哨兵模式和集群模式. 1. 主从模式 所有的写请求都被发送到主数据库上,再由主数据库将数据同步到从数据库上.主数据库主要用于执行写操作和数据同步,从数据库主要用于执 ...

  2. idea鼠标光标变黑块

    在编辑文档和在编程时经常敲着敲着竖线就变成了黑块,这样输入新的代码就会改变其他代码,这是因为输入方式改成了改写模式 只要按fn+insert就可以解决了 搜索 复制

  3. PriorityQueue&&Function overload

    用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue    #include <iostream>    #include ...

  4. LoadRunner性能测试-app压力测试

    步骤分为三步: 一,录制脚本 录制脚本原理:启动LR代理服务器监听设置好的端口号是否有请求发送给服务器,有请求时,代理服务器接收请求,并转发给对应的系统服务器,LR从而获取到请求的信息与数据,生成脚本 ...

  5. Java工程结构 应用分层

    (一) 应用分层 1. [推荐]图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于 Web 层,也可以直接依赖于 Service 层,依此类推: • 开放接口层:可直接封装 Se ...

  6. NO_PUBKEY 76F1A20FF987672F

    在ubuntu18.04上安装win时,执行sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic ...

  7. 日常笔记-VS

    VS快捷键 按键 作用 CTRL+R,CTRL+W 以点显示空格 CTRL+L 删除当前行 CTRL+D 重复当前行 CTRL+K,D 格式化代码 CTRL+M 展开代码

  8. c#调用键盘输入

    [code]csharpcode: /// <summary> /// 键盘输入模拟 /// </summary> [DllImport("user32.dll&qu ...

  9. vivo全球商城:库存系统架构设计与实践

    作者:vivo官网商城开发团队 - Xu Yi.Yan Chao 本文是vivo商城系列文章,主要介绍vivo商城库存系统发展历程.架构设计思路以及应对业务场景的实践. 一.业务背景 库存系统是电商商 ...

  10. Python学习笔记--循环的知识以及应用

    while循环 代码: 结果: 案例:求1-100的和 实现: 案例:while循环猜数字 实现: while循环的嵌套使用 案例:打印九九乘法表 (注意:要是想要输出不换行,代码可以这样写:prin ...