java中的常见异常1 -- 新手上路,减速慢行
Throwable: 异常的顶级父类
----Error:错误,程序无法处理
----Exception:异常,可通过编码修复
----编码异常:未运行已经报错
----运行异常:可编译,运行报错
1. Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at cn.tedu.basic.TestArray.main(TestArray.java:11)
------数组下标溢出异常
2. There is no default constructor available in 包名
------没有可用的默认构造函数
---解释:父类的含参构造覆盖了默认的无参构造,子类默认不显示的super()
不能调用父类对应参数的构造方法,
-解决办法:子类添加super(参数)
3. ArithmeticException
----算术异常
--例子:10/0 :0不能作为除数
4. InputMismatchException
----输入不匹配异常
--解释:输入的数据类型与自己预先定义的数据类型不匹配
5. StackOverflowError
----堆栈溢出错误
--解释:内部类和外部类一直互相调用占据了所有内存
一直在创建内部类或外部类对象
例:Outer o = new Outer();o.eat();/*创建外部类对象,调用外部类*/---Inner i = new Inner();i.eat2();/*一直创建内部类对象,调用内部类*/---Inner i = new Inner();/*一直创建内部类对象*/
public class TestInner {
public static void main(String[] args) {
//Outer.Inner oi =new Outer().new Inner();
Outer o = new Outer();
o.eat();
//oi.eat2();
}
}
class Outer{
private String name ="小二";
int a =10;
public void eat(){
Inner i = new Inner();
i.eat2();
System.out.println(i.sum);
System.out.println("外部类eat");
System.out.println(i.toString());
try {
finalize();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
public static void good(){
System.out.println("外部类静态good()");
}
class Inner{
Inner i = new Inner();
//private double S =10.1;
int sum =10;
public void eat2(){
System.out.println(i.toString());
//Outer.good();
System.out.println(name);
System.out.println(a);
System.out.println("内部类eat2()");
}
}
}
6. NullPointExcept -- 空指针异常
----调用空对象的实例方法。
访问或修改字段或空对象。
以null的长度作为数组。
访问或修改null插槽,就好像它是一个数组一样。
将null视为Throwable值。
--解决办法:可以通过适当地初始化给定对象(该对象将设置该对象的实例)来解决或解决。 因此,该对象将具有一个实例,并且不会为null,这是Null Pointer Exception的原因。
在捕获异常外面加一个非空判断
--例:FileReader in = null;//定义的变量为空值,所以在下面需要赋值,否则后面使用对象in时一直为空
new FileReader("D:\\ready\\1.txt");
7. FileNotFoundException -- 文件无法找到
----文件位置更换
文件名、目录名或卷标语法不正确。
8. InvalidClassException -- 无效类异常
----解释:stream classdesc serialVersionUID = -3193364654654535741, 自动生成的默认UID
local class serialVersionUID = 3102686376622831557, 改动代码后生成的UID
--解决办法:使前后UID保持一致:序列化与反序列化同时或者按顺序一个一个执行,
再或者手动将序列化版本号写出固定值 //private static final long serialVersionUID = 1L;
9. NotSerializableException -- 不可序列化异常
----要序列化对象所在的类并没有实现序列化接口,即没有implements父接口
--解决方案:实现序列化接口
10. Error:(27, 25) java: 未报告的异常错误java.lang.InterruptedException; 必须对其进行捕获或声明以便抛出
----中断异常:当阻塞方法收到中断请求的时候就会抛出InterruptedException异常
--/*让每个进来循环的线程对象,都经历休眠10ms,增加错误出现的概率*/
Thread.sleep(10);//让线程休眠10秒
例:
/**
* 设计多线程编程模型,4个窗口共计售票100张
* 本方案使用多线程实现方案1:implements Runnable来完成
*/
public class TestThread2 {
public static void main(String[] args) {
//创建自定义类对象
TicketRunnable target = new TicketRunnable();
创建自定义线程对象
Thread t1 = new Thread(target);
Thread t2 = new Thread(target);
Thread t3 = new Thread(target);
Thread t4 = new Thread(target);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
//1.创建自定义多线程类实现多线程接口
class TicketRunnable implements Runnable{
//定义变量用来保存要收买的票数
int tickets = 100;
//重写run(),完成业务
@Override
public void run() {
//循环卖票
while (true){
synchronized (TicketRunnable.class){
if(tickets>0){
try {
/*让每个进来循环的线程对象,都经历休眠10ms,增加错误出现的概率
* 问题一:产生重卖的现象:同一张票卖给了多人--同步锁synchronized (类名.class){}
* 问题二:产生了超卖的现象:超出了规定的票数100,出现了0,-1,-2这样的票 --if(tickets>0){}*/
Thread.sleep(10);//让线程休眠10秒
} catch (InterruptedException e) {
e.printStackTrace();
}
//打印当前正在卖票的线程名称,并且票数减一
System.out.println(Thread.currentThread().getName()+"="+tickets--);
}
//做判断,如果没票了就停止循环卖票
if (tickets<=0)break;
}
}
}
}
11. NoSuchMethodException -- 没有这个方法异常
----构造方法的含参及全参,使用反射创建含参对象时,不报错但会出异常
12. ClassCastException -- 类抛出异常,
----即是类型转换错误,通常是进行强制类型转换时候出的错误
例子:a1和a2都是动物,但是a1这只动物是一只狗,而a2这只动物是猫,所以要把a1转换成狗可以,因为a1本身就是狗,而a2是一只猫,所以要转换成狗就出错
class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
public class Test7 {
public static void main(String[] args){
Animal a1 = new Dog();//父类引用指向子类对象
Animal a2 = new Cat();
Dog d1 = (Dog)a1;//强制父类引用类型转换为子类引用类型
Dog d2 = (Dog)a2;
}
}
13. IllegalArgumentException -- 非法参数异常
----传入的参数违反了一个方法要求的某些特性
14. MyBatisSystemException -- MyBatis 系统异常
java中的常见异常1 -- 新手上路,减速慢行相关推荐
- java中的常见异常
1. java.lang.NullPointerException(空指针异常) 调用了未经初始化的对象或者是不存在的对象 经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时 ...
- Java基础学习系列--(七)彻底搞懂java中的【异常、线程】的使用
第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中, ...
- unchecked异常_为什么要在Java中使用Unchecked异常而不是Checked异常
unchecked异常 关于检查与未检查的异常的争论可以追溯到过去. 有人说这是Java包含的最佳功能之一. 其他人则说这是他们最大的错误之一[ 1 ]. 辩论似乎结束了. 在这篇文章中,我将尝试包含 ...
- 为什么要在Java中使用Unchecked异常而不是Checked异常
关于检查与未检查的异常的争论可以追溯到过去. 有人说这是Java包含的最佳功能之一. 其他人则说这是他们最大的错误之一[ 1 ]. 辩论似乎结束了. 在这篇文章中,我将尝试包含指向该主题的文章和书籍的 ...
- java if (name!=null name!=),java中的NullPointerException异常
java中的NullPointerException异常 关注:176 答案:3 mip版 解决时间 2021-01-27 20:59 提问者侢遇噹姩揂 2021-01-27 02:10 Logi ...
- java 异常 中英文_史上最全的Java中所有Exception异常中英文对照
Java中所有Exception异常中英文对照AclNotFoundException, 如果对不存在的访问控制列表进行访问,则会 ArithmeticException 算数异常 ArrayInde ...
- java中两种异常类型_Java中的三种异常类型
java中两种异常类型 Errors are the bane of users and programmers alike. Developers obviously don't want thei ...
- 如何处理 Java 中的 NumberFormat 异常
NumberFormatException是 Java 中的未经检查的异常,当尝试将格式不正确的字符串转换为数值时发生.因此,当无法将字符串转换为数字类型(例如 int.float)时会引发此异常.例 ...
- JAVA中的常见Bug
作为游戏程序开发者,你的日常是这样吗? 每日常态是这样吗? 作为编程开发者那自然就要对程序中的常见的异常有一定的了解.在这里我列出几个常见的程序中的异常方便学习Java的新手进行查改 Java.lan ...
最新文章
- Linux / TCPIP / 判断 client 已经关闭的方法
- php简述一下并集交集差集,总结了一下js中的差集、交集、并集
- 2017年第八届蓝桥杯 - 国赛 - C/C++大学B组 - A. 36进制
- leetcode132. 分割回文串 II(dp)
- 计算机拆卸组装过程,如何拆卸并重新组装笔记本电脑
- 控制台下修改系统驱动状态的代码
- 快递送不上门,谁的锅?
- mysql 表 组织 管理_MySQL 基础知识梳理学习(二)----记录在页面层级的组织管理...
- 前端主流的 Javascript,缺失了哪些技能?
- 3DSMAX安装未完成,某些产品无法安装的解决方法
- kubernetes英语怎么读_小学三年级英语怎么学
- 如何实现Miracast多个设备同时连接投屏
- 应用统计学学什么科目_应用统计学考研科目及总数
- 算法与数据结构——有序表(Java)(b站左程云课程笔记总结)
- 你为什么要去博物馆? 我的理由比较另类
- 抖音主页头图怎么设置,掌握以下5点技巧即可丨国仁网络资讯
- 中文域名正确注册、配置、使用
- element遮罩_element-ui遮罩层el-dialog的使用
- x265 (HEVC编码器,基于x264) 介绍
- 深信服“监控员工跳槽倾向”引争议,律师称未告知员工涉嫌违法